社区
C语言
帖子详情
关于const 成员函数
acreep
2003-10-20 02:29:26
初学C++
下面的代码:
const Stock land = Stock("Kdjfi Aksdo");
land.show();
编译器将拒绝第2行
因为show()得代码无法确保调用对象不被修改,
我不太明白,谁能给我讲讲
...全文
43
5
打赏
收藏
关于const 成员函数
初学C++ 下面的代码: const Stock land = Stock("Kdjfi Aksdo"); land.show(); 编译器将拒绝第2行 因为show()得代码无法确保调用对象不被修改, 我不太明白,谁能给我讲讲
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
acreep
2003-10-20
打赏
举报
回复
我明白了 就是说
const Stock land = Stock("Kdjfi Aksdo");表明land是Stock类的常量对象类型
但是
成员函数show()可能会对其改动
所以为了 避免 可能的错误
声明void show() const;
此时show()函数 就不能改变它得成员了
谢谢
daizh
2003-10-20
打赏
举报
回复
void show();
const Stock:: show();
这样的声明和定义当然不对,显然它们的类型不一致。如果你要实现上述功能,show函数的声明就是void show() const;
acreep
2003-10-20
打赏
举报
回复
书上说应该是这样写
void show() const;
acreep
2003-10-20
打赏
举报
回复
我还是不太明白
我的声明和函数的头文件这样写:
void show();
const Stock:: show();
会有什么隐患吗?
daizh
2003-10-20
打赏
举报
回复
const Stock land = Stock("Kdjfi Aksdo");表明land是Stock类的常量对象类型,它只能使用该类中的const成员,而不能使用其他成员,确保调用对象不被修改。
C++ const对象与非const对象的相互调用、const
成员
函数
与非const
成员
函数
的相互调用
1)const对象可以调用非const
成员
函数
吗? 答:不能。const修饰的对象实则修饰的是该对象的this指针,并且const修饰的
成员
不能进行修改,如果使用const调用非const
成员
函数
,可能会将const对象进行修改。 2)非const对象可以调用const
成员
函数
吗? 答:可以,这里就是将一个可以修改的对象进行读取,是允许的。 3)const
成员
函数
内可以调用其它的非const
成员
函数
吗? 答:不允许,const
成员
函数
调用非const
成员
函数
,调用该const
成员
函数
的
C++中const和非const对象分别调用const和非const
成员
函数
一、先来提出问题 const对象可以调用非const
成员
函数
吗? 非const对象可以调用const
成员
函数
吗? const
成员
函数
内可以调用其它的非const
成员
函数
吗? 非const
成员
函数
内可以调用其他的const
成员
函数
吗? 二、实践出真知 实践发现: 1、const对象可以调用const
成员
函数
2、const对象不能调用非const
成员
函数
3、非const对象可以调用const
成员
函数
4、非const对象可以调用非const
成员
函数
5、const
成员
函数
不能调用非const
成员
函数
C++类中const
成员
函数
与非const
成员
函数
的调用规则
const修饰类的
成员
函数
将const修饰的类
成员
函数
称之为const
成员
函数
,const修饰类
成员
函数
,实际修饰该
成员
函数
隐含的this指针,表明在
成员
函数
中不能对类的任何
成员
进行修改。 1.const对象可以调用非const
成员
函数
吗? 2.非const对象可以调用const
成员
函数
吗? 3.const
成员
函数
内可以调用其它的非const
成员
函数
吗? 4.非const
成员
函数
内可以调用其它的const
成员
函数
吗? 总结 调用的依据其实是传隐含的this指针的过程; 在使用const 的时
C++:const
成员
函数
的使用细则
const修饰类的
成员
函数
将const修饰的类
成员
函数
称之为const
成员
函数
,const修饰类
成员
函数
,实际修饰该
成员
函数
隐含的this 指针,表明在该
成员
函数
中不能对类的任何
成员
进行修改。 请思考下面的几个问题: const对象可以调用非const
成员
函数
吗? 非const对象可以调用const
成员
函数
吗? const
成员
函数
内可以调用其它的非const
成员
函数
吗? 非const
成员
函数
...
const对象只能调用const
成员
函数
、不能调用非const
成员
函数
;非const对象可以调用const
成员
函数
引发原因: 由调用
成员
函数
时隐式传入的当前对象的this指针引起。 1、 非const
成员
函数
中的隐式参数:classA* this 2、 const
成员
函数
中的隐式参数:const classA* this 根本原因: 1、 const对象的指针为const classA* this,因此传入非const
成员
函数
时编译器报错(类型不匹配,无法从const 指针转换为非const指针);但传入co...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章