条款一
原话:当你需要考虑 不指向任何对象 的可能性时,或是考虑 在不同时间指向不同对象 的能力时,你就应该采用pointer。前一种情况你可以将 pointer设置为null,后一种情况你可以改变pointer所指对象。而当你确定 总是会代表某个对象,而且 一旦代表了该对象就不再能够改变,那么你应该选择reference。
考虑四种情况:
1、pointer:声明object*
2、const_pointer:声明const objcect*
3、reference:声明object&
4、const_reference:声明const objcet&
pointer,可以指向object对象,也可以指向从object继承的对象,只要是前面的对象都可以指向。
const_point,可以指向固定对象,一但指向了某个对象,它就不能够指向其他对象了,当然对象里面的变化,它不关心。reference和const_reference也是同样的道理。
很多人会问,那么pointer和reference有什么区别呢?
或许看起来没有什么区别,你就这么想吧,pointer到对象,是指向对象。而reference就是对象。这时候又有人问那么reference和直接声明的对象又有什么区别呢?看看下面的用法:
C#的程序员可能有以下幻想
object& ro = new objcet ;//VC7.1下声明int& iValue=5;静态编译出现Error。
object o = new object;
但事实上用法应该是这样的,因为在C++里的只能把new的对象给指针,例如object* po=new object。
object o;
object& ro = o;//
这个时候,他们没有什么区别,只不过是名字不同而已,一个为o,另一个为ro,这时候那个对象有两个名字。
这时候可能又会想那么const_refencence又是怎么回事啊,那就是它所指代的对象不能变化(和const_pointer的区别),即对象状态为const。
其实原本想划几个图来表示,那就可以更加直观了。可这个机子没工具,以后再补拉。
相关文章:
- 《More Effective C++》读书笔记(中) 2021-05-30
- More Effective C++ 学习笔记(2) 2022-12-23
- More Effective C++ 学习笔记(1) 2022-12-23
- 读书笔记之:More Effective C++ (2007)[+] 2021-05-24
- [More Effective C++ 学习笔记]异常 2021-12-30
- [More Effective C++ 学习笔记]效率 2021-10-25
- 《More Effective C++》 2022-01-16
- More Effective C++ 2022-01-10