2011-12-05 134 views

回答

4

您有什么还没有一个const指针,它指向一个const对象 - 也就是说,指针可以改变,但对象不能。一个const指针是:

MyObj *const ptrObj = &MyObj2; 

至于为什么你会喜欢它了一个参考,你可能想使用的东西的NULL特殊价值的灵活性 - 你没有得到与参考。

2

你说错了。你有什么是可变指针对象:

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 &对。

如果你坚持要得到一些建议,那么我会说,“不要使用指针”。

1

指针和引用之间的重要区别是它们可能引用多少个对象。一个引用总是指一个对象。指针可以指向零(当指针为空时),一个(当指针指定单个对象的位置时)或n个对象(当指针指定给数组内的某个点时)。

指针指向0到n个对象的能力意味着指针在其表示的内容中更加灵活。当指针的额外灵活性不是必需的时,通常最好使用引用。这样,读取你的代码的人不必确定指针是指零,一个还是n个对象。

相关问题