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)

相关推荐

  • 2021218 LeetCode刷题 旋转字符串,难度 :单词规律)

    技术2021218 LeetCode刷题 旋转字符串,难度 :单词规律) 2021218 LeetCode刷题 旋转字符串(难度 :单词规律)给定两个字符串, A和B。
    A的旋转操作就是将A 最左边

    礼包 2021年12月21日
  • 可圈可点的意思,“可圈可点”是什么意思

    技术可圈可点的意思,“可圈可点”是什么意思可圈可点。原指文章中有精妙的句子可圈可点的意思,有值得欣赏、值得赞美的意思。现使用范围扩大,常用于文艺体育类的新闻报道,又进而扩大到其他领域,形容或称赞一切出色、精彩、值得称道的

    2021年10月29日
  • View如何实现非中心点旋转

    技术View如何实现非中心点旋转这篇文章主要为大家展示了“View如何实现非中心点旋转”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“View如何实现非中心点旋转”这篇文章吧。

    攻略 2021年12月3日
  • 视频服务器为什么推荐美国服务器

    技术视频服务器为什么推荐美国服务器美国视频服务器主要是指用于部署视频直播或者点播的流媒体SDK服务器。美国视频服务器一般采用独享的物理服务器。虚拟机不同,用户可以自行管理所有硬件资源,直接控制服务器的负载,不受于其他用户

    礼包 2021年11月1日
  • what是什么意思中文,whatsupman什么意思

    技术what是什么意思中文,whatsupman什么意思意思是:喂what是什么意思中文,伙计,最近怎样。What s up近来如何
    1、What` s up with this window, dude?
    这窗有什么

    生活 2021年10月24日
  • oracle序列达到了最大值处理的示例分析

    技术oracle序列达到了最大值处理的示例分析这篇文章主要介绍了oracle序列达到了最大值处理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。客

    攻略 2021年12月13日