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)

相关推荐

  • 如何理解Process 执行命令行封装类

    技术如何理解Process 执行命令行封装类今天就跟大家聊聊有关如何理解Process 执行命令行封装类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。进行多次测试

    攻略 2021年11月12日
  • 3v,电磁阀3v和4v的区别

    技术3v,电磁阀3v和4v的区别电磁阀中 3v 、4v、 2v的区别3v:工作原理、类别和参数。
    一、工作原理:
    1、电磁阀中3v 的工作原理是二位三通电磁阀,为双线圈控制,一个线圈瞬间通电后关闭电源、阀打开,另一个线圈

    生活 2021年10月24日
  • 人用C#开发ActiveX控件并使用web调用

    技术人用C#开发ActiveX控件并使用web调用人用C#开发ActiveX控件并使用web调用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。入职差不多两个

    攻略 2021年10月29日
  • javameta-info里边放的是什么(meta标签name属性有哪些参数)

    技术Java的meta标签有什么作用这篇文章主要介绍“Java的meta标签有什么作用”,在日常操作中,相信很多人在Java的meta标签有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家

    攻略 2021年12月22日
  • MAC上安装MYSQL的步骤是什么

    技术MAC上安装MYSQL的步骤是什么这篇文章主要讲解了“MAC上安装MYSQL的步骤是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MAC上安装MYSQL的步骤是什

    攻略 2021年10月22日
  • Difference between pem, crt, key files

    技术Difference between pem, crt, key files Difference between pem, crt, key filesDifference between pem

    礼包 2021年12月9日