为了账号安全,请及时绑定邮箱和手机立即绑定

this指针就是要满足读写权限都具有吗?

没看懂,this指针要求读写权限都具有这个结论怎么得到的,还有为啥coordinate的对象只有读权限呢?

正在回答

3 回答

楼上说的是正确的,这个和之前讲的const是一致的,比如:

const int A;

int *p=&A;

这个就是错误的,因为A已经设置为常量,而指针p是可以读写的,用一个权限大的指针p去指向一个权限小的A,是不可以的,会有风险。

coordinate的对象被const修饰,变成了常对象,那么指向它的指针this也必须变成常指针,否则就有改变常对象值得风险,因此成员函数内容无论是否改变了常对象的值,都要变成常成员函数,这也就是为什么getX()和getY()要变成常成员函数getX() const和getY()const

3 回复 有任何疑惑可以回复我~

如果不加 const 修饰就是一般情况下,this 是具有读写权限的,但是加了const修饰他就只能读而不能写 了,因为Coordinate 对象用const修饰了,那么他就只能读不能写了,也就要求他的隐含参数this只能是const也就是只能有读权限,如果此时不去修改this的权限,他就是具有读写权限,这和Coordinate只具有读权限是矛盾的,变异的时候就会报错

0 回复 有任何疑惑可以回复我~

单纯的this指针具有读写权限的,也就是通过可以this改变对象,但是声明const coordinate之后,这个对象是不能改变的,相应的也不能通过this指针来改变的这个对象的值,这时候对象只有读权限

0 回复 有任何疑惑可以回复我~
#1

灵魂火

只有读权限的时候为什么 getX(); getY();也会报错呢?
2015-11-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

this指针就是要满足读写权限都具有吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信