关于this指针!!

xuyueyanghunan 2009-07-28 09:49:42
为什么在const成员函数中,this指针是指向const类型的指针???
大家能解释一下吗?
...全文
135 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuyueyanghunan 2009-07-28
  • 打赏
  • 举报
回复
谢谢理解了!!
ljt3969636 2009-07-28
  • 打赏
  • 举报
回复
这么想一个const修饰普通的变量,干什么不想变量被修改吧?再想想,const变量为什么只能被const指针指,而不能被非const指针指?因为非const指针可以修改指向的对象而我们这个const变量恰恰不想由于变量被非const指而被通过非const指针修改吧?

那么const函数的目的是什么呢?const函数的这种目和const this,不像普通的const变量和指向const的指针的关系吗?这样很容易理解啊~!
xuyueyanghunan 2009-07-28
  • 打赏
  • 举报
回复
struct test
{
int * p;
。。。
void func()const {*p = 1;}
};
规定真的有足够理由么,真的需要足够理由么,还是规定只需要当作一个规定。
谢谢,觉悟了!!
taodm 2009-07-28
  • 打赏
  • 举报
回复
struct test
{
int * p;
。。。
void func()const {*p = 1;}
};
规定真的有足够理由么,真的需要足够理由么,还是规定只需要当作一个规定。
herman~~ 2009-07-28
  • 打赏
  • 举报
回复
标准规定的东东 假设不是const类型的指针,那么定义const void fun();
fun可以随意修改成员函数,也就失去了意义
xuyueyanghunan 2009-07-28
  • 打赏
  • 举报
回复
规定也要有个理由啊!
xuyueyanghunan 2009-07-28
  • 打赏
  • 举报
回复
我也在看C++primer,但是不明白这一点!!
illuminati 2009-07-28
  • 打赏
  • 举报
回复
首先推荐你看一下C++primer,讲的很详细
因为在const成员函数中,不能改变对象
在普通的非 const 成员函数中,this 的类型是一个指向类类型的 const 指针。可以改变 this 所指向的值,但不能改变 this 所保存的地址。在 const 成员函数中,this 的类型是一个指向 const 类类型对象的 const 指针。既不能改变 this 所指向的对象,也不能改变 this 所保存的地址。

taodm 2009-07-28
  • 打赏
  • 举报
回复
规定。
guoxingnuli 2009-07-28
  • 打赏
  • 举报
回复
说的好

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧