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

请问这样写为什么是错的??

const Coordinate coor(3, 5);

Coordinate *const p = &coor;
    // 创建常引用c
 const Coordinate &c = coor;


正在回答

2 回答

这是一种逻辑错误问题,常量指针的定义上可以改变其指向地址的数据,仅表示它自身不能指向别的地方,而常量对象确实是说明对象数据不可变,所以在定义上就存在一种冲突,编译器认为这种行为不合理,所以编不过!

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

qq_蕞終灬聽風者_0 提问者

非常感谢!
2016-08-18 回复 有任何疑惑可以回复我~

一开始定义了一个常量对象,表明这个对象是不可变的,只能读。而后面定义的是常量指针,只是表明这个常量指针地址不可变,不可以再指向其他对象,而他指向的对象的数据却是可以改变的。与一开始的定义就产生了冲突,所以就错了。个人理解,如有错误的地方还请指正!

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

qq_蕞終灬聽風者_0 提问者

这种冲突是存在没错,但是指针指向的数据如果也是常量那就应该是符合其指向范围的,指针指向的是个大范围,可包括常量的小范围。
2016-08-17 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

请问这样写为什么是错的??

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