《More Effective C++》+《Effective C++》,两本经典双剑合璧,必然威力无穷。
Item M1 指针与引用的区别
1. 在任何情况下都不能使用指向空值的引用。结果将是不确定的。
[例如: char *pc = 0; char& rc = *pc;]
2. 不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高。因为在使用引用之前不需要测试它的合法性,指针则应该总是被测试,防止其为空。
3. 指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变。
4. 在以下情况下你应该使用指针,一是存在不指向任何对象的可能(空指针),二是能够在不同的时刻指向不同的对象(在这种情况下,能改变指针的指向)。
5. 当你必须指向一个对象并且不想改变其指向时,或者在重载操作符并为防止不必要的语义误解时,你不应该使用指针。而在除此之外的其他情况下,则应使用指针。
[操作符[]赋值时使用引用]
[const myOutstream &operator<<(int value) const 使用引用,详见" 浅析cout "]
[参考" 什么时候使用引用"]
Item M2 尽量使用C++风格的类型转换
1. C语言风格的类型转换在程
Item M1 指针与引用的区别
1. 在任何情况下都不能使用指向空值的引用。结果将是不确定的。
[例如: char *pc = 0; char& rc = *pc;]
2. 不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高。因为在使用引用之前不需要测试它的合法性,指针则应该总是被测试,防止其为空。
3. 指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变。
4. 在以下情况下你应该使用指针,一是存在不指向任何对象的可能(空指针),二是能够在不同的时刻指向不同的对象(在这种情况下,能改变指针的指向)。
5. 当你必须指向一个对象并且不想改变其指向时,或者在重载操作符并为防止不必要的语义误解时,你不应该使用指针。而在除此之外的其他情况下,则应使用指针。
[操作符[]赋值时使用引用]
[const myOutstream &operator<<(int value) const 使用引用,详见" 浅析cout "]
[参考" 什么时候使用引用"]
Item M2 尽量使用C++风格的类型转换
1. C语言风格的类型转换在程