MoreEffective C++ 阅读笔记(一)---point 和 reference的区别
2008-08-06 09:27
330 查看
MoreEffective C++ 阅读笔记(一)
黑月亮 发表于 2005-10-1 21:44:00
1. point 和 reference的区别
区别:
(1),在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象.因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。
(2) 不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高。因为在使用引用之前不需要测试它的合法性。
(3)指针可以被重新赋值以指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变。
在以下情况下你应该使用指针,
一是你考虑到存在不指向任何对象的可能(在这种情况下,你能够设置指针为空),
二是你需要能够在不同的时刻指向不同的对象(在这种情况下,你能改变指针的指向)。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么你应该使用引用。
三就是当你重载某个操作符时,你应该使用引用。最普通的例子是操作符[]。
当你知道你必须指向一个对象并且不想改变其指向时,或者在重载操作符并为防止不必要的语义误解时,你不应该使用指针。而在除此之外的其他情况下,则应使用指针
黑月亮 发表于 2005-10-1 21:44:00
1. point 和 reference的区别
区别:
(1),在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象.因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。
(2) 不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高。因为在使用引用之前不需要测试它的合法性。
(3)指针可以被重新赋值以指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变。
在以下情况下你应该使用指针,
一是你考虑到存在不指向任何对象的可能(在这种情况下,你能够设置指针为空),
二是你需要能够在不同的时刻指向不同的对象(在这种情况下,你能改变指针的指向)。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么你应该使用引用。
三就是当你重载某个操作符时,你应该使用引用。最普通的例子是操作符[]。
当你知道你必须指向一个对象并且不想改变其指向时,或者在重载操作符并为防止不必要的语义误解时,你不应该使用指针。而在除此之外的其他情况下,则应使用指针
相关文章推荐
- More Effective C++ 阅读笔记(九)--要用引用(reference)捕获异常
- More Effective C++ 阅读笔记(五)-- ++与--的前缀、后缀的区别
- More Effective C++ 阅读笔记(六)--哪些运算符不能重载
- More Effective C++ 阅读笔记(十三)--要求或禁止在堆中产生对象
- More Effective C++ 阅读笔记(六)--哪些运算符不能重载
- More Effective C++ 读书笔记 之 区别pointer和reference
- More Effective C++ 阅读笔记(七)--防止在析构函数和构造函数中发生资源泄漏
- More Effective C++ 阅读笔记
- effective c++ and more第二次阅读之笔记
- (大卫的阅读笔记)More Effective C++ Item 附2:一个auto_ptr的实现实例
- More Effective C++ 阅读笔记(二) -- C++的新型类型转换(造型Cast)
- More Effective C++ 阅读笔记(八)--“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异
- 侯捷 more effective c++(WQ中文版) 阅读笔记1
- More Effective C++ 阅读笔记(三)-- placement new操作符
- More Effective C++ 阅读笔记(十)--效率问题
- More Effective C++ 阅读笔记(四)-- 避免使用隐式类型转换
- More Effective C++ 阅读笔记(十一)--怎样让构造函数和非成员函数虚拟化
- more effective C++阅读笔记
- More Effective C++ 阅读笔记(十二)--怎样限制实例化对象的数量
- <More Effective C++>笔记--异常