例如:为什么在引用(const指针)可用时使用const关键字声明常量指针?
我可以创建一个常量指针,它指向一个可以通过指针更改的对象。指针不能被重新分配:
MyObj const *ptrObj = MyObj2
我为什么会用这个了:
MyObj &ptrObj = MyObj2
例如:为什么在引用(const指针)可用时使用const关键字声明常量指针?
我可以创建一个常量指针,它指向一个可以通过指针更改的对象。指针不能被重新分配:
MyObj const *ptrObj = MyObj2
我为什么会用这个了:
MyObj &ptrObj = MyObj2
您有什么还没有一个const
指针,它指向一个const
对象 - 也就是说,指针可以改变,但对象不能。一个const
指针是:
MyObj *const ptrObj = &MyObj2;
至于为什么你会喜欢它了一个参考,你可能想使用的东西的NULL
特殊价值的灵活性 - 你没有得到与参考。
你说错了。你有什么是可变指针恒对象:
T const * p;
p = 0; // OK, p isn't const
p->mutate(); // Error! *p is const
T const & r = *p; // "same thing"
你真正想要的是一个不断指针可变对象:
T * const p = &x; // OK, cannot change p
T & r = x; // "same thing"
p->mutate(); // OK, *p is mutable
事实上,引用在道德上等同于常数指针,即T &
vs T * const
,以及常数版本T const &
对。
如果你坚持要得到一些建议,那么我会说,“不要使用指针”。
指针和引用之间的重要区别是它们可能引用多少个对象。一个引用总是指一个对象。指针可以指向零(当指针为空时),一个(当指针指定单个对象的位置时)或n个对象(当指针指定给数组内的某个点时)。
指针指向0到n个对象的能力意味着指针在其表示的内容中更加灵活。当指针的额外灵活性不是必需的时,通常最好使用引用。这样,读取你的代码的人不必确定指针是指零,一个还是n个对象。
你不会因为它没有如图所示编译。假设'MyObj'是一个类型,'MyObj2'是'MyObj'的一个实例,你仍然需要'&'... – AJG85