C++ 调试问题:对象包含与成员函数不兼容的类型限定符

技术C++ 调试问题:对象包含与成员函数不兼容的类型限定符 C++ 调试问题:对象包含与成员函数不兼容的类型限定符今天调试C++自定义String代码的时候,碰到一个问题,编译期报错:对象包含与成员函数

c调试问题:对象包含与成员函数不兼容的类型限定符。

今天在调试C自定义String代码的时候,遇到了一个问题,在编译的时候报告了一个错误:对象包含了一个与成员函数不兼容的类型限定符。

先看看代码:

类字符串{//自定义字符串类

公众号:

字符串(常量字符*

{//构造函数

if(!s){ 0

len=0;

str=新字符[1];

str[0]=0;

}

else {

len=strlen(s);

str=新字符[len 1];

strcpy(str,s);

}

}

~ String(){ delete[]Str;len=0;}//析构函数

int size(){ return len;}//字符数

字符串运算符=(常量字符串)

{//复制构造函数

if (this==s)返回* this

删除[]字符串;

len=s . size();

str=新字符[len 1];

strcpy(str,s . c _ str());

返回*这个;

}

const char *c_str()

{//获取C风格字符串

返回字符串;

}

私人:

char * str

int len

};

int main()

{

字符串名词(' book ');

字符串动词=名词;

cout noun . c _ str()endl;

cout动词. c _ str()endl;

返回0;

}

来自MSVC编译器的错误消息:

E1086对象包含与成员函数“String:size”不兼容的类型限定符

E1086对象包含与成员函数“String:c _ str”不兼容的类型限定符

问题在哪里?

问题似乎是在运算符=

我们知道,operator=左侧表达式类的内部成员会被修改,但右侧表达式类的内部成员不会被修改,所以只能调用等号右侧对象的const-limited函数(不是const的返回值),强制对象的内部状态不能被修改。

解决方案:向字符串String:size和字符串String:c _ str函数添加常量限定符:

类别字符串{ 0

公众号:

int size()const { return len;}

字符串运算符=(常量字符串)

{

if (this==s)返回* this

删除[]字符串;

len=s . size();

str=新字符[len 1];

strcpy(str,s . c _ str());

返回*这个;

}

const char *c_str() const

{

返回字符串;

}

.

};

.

总结:

在复制构造函数中,只能调用当前类的const限定符函数;

Const限定的成员函数只能调用const限定的成员函数,不能调用非const限定的成员函数,即使对象的内部状态没有被修改;

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/88699.html

(0)

相关推荐

  • innodb的基础(innodb使用技巧)

    技术InnoDB基础知识点有哪些这篇文章给大家分享的是有关InnoDB基础知识点有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、关于count(*)知识点:MyISAM会直接存储总行数

    攻略 2021年12月22日
  • 如何利用RMAN复制CDB的PDB

    技术如何使用RMAN对CDB中的PDB进行复制本篇内容主要讲解“如何使用RMAN对CDB中的PDB进行复制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用RMAN对CD

    攻略 2021年12月21日
  • let、const、var的区别

    技术let、const、var的区别 let、const、var的区别1、var是ES5提出的,let和const是ES6提出的。
    2、const声明的是常量,必须赋值  1)一旦声明必须赋值,不能使用

    礼包 2021年12月5日
  • 如何创建一个好的索引

    技术如何创建一个好的索引 如何创建一个好的索引1、过滤效率高的放前面
    对于一个多列索引,它的存储顺序是先按第一列进行比较,然后是第二列,第三列...这样。查询时,如果第一列能够排除的越多,那么后面列需要

    礼包 2021年12月13日
  • 分析数据库都做了哪些操作

    技术分析数据库都做了哪些操作这篇文章主要介绍“分析数据库都做了哪些操作”,在日常操作中,相信很多人在分析数据库都做了哪些操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”分析数据库都做了哪

    攻略 2021年11月4日
  • 影响mysqld安全的几个选项分别是什么

    技术影响mysqld安全的几个选项分别是什么影响mysqld安全的几个选项分别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。影响mysqld安全的几个

    攻略 2021年11月17日