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

Coordinate * const p=&coor;

// 创建常指针p 

 Coordinate * const p=&coor;    

 p->printInfo(); 

 index.cpp: In function 'int main()': index.cpp:29:24: error: invalid conversion from 'const Coordinate*' to 'Coordinate*' [-fpermissive]   Coordinate * const p=&coor; 

 为什么?

正在回答

2 回答

Coordinate * const p 和 Coordinate const *p 是不一样的。

Coordinate * const p 中的const 修饰指针,代表指针指向的地址是一个常量,地址不能改。

Coordinate const *p 中的const 修饰指针变量,代表指针指向的变量是个常量,变量不能改。(叫变量可能有点问题,const Coordinate *p 也是可以的。)

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

ernest2017 提问者

感谢您的回复 原理我都明白的只是这个题目里 不明白,不过我刚刚明白了。 因为 (3,5)题目一开始就帮我定义了 const,所以我必须用用 const *p去保证它不会被修改,如果我把题目的const对象(3,5)去了const 这个时候 我就运行正确了。 Coordinate coor(3, 5); // 创建常指针p Coordinate * const p=&coor;
2018-08-19 回复 有任何疑惑可以回复我~
#2

ernest2017 提问者

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

你的 printinfo()后面加const了吗

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

ernest2017 提问者

加了 感谢您的回复!
2018-08-19 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

Coordinate * const p=&coor;

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