effective C++笔记之条款22:尽量使用“传引用”而不用“传值”
2012-03-14 21:25
288 查看
l 通过值来传递一个对象的具体含义是由这个对象的类的拷贝构造函数定义的。这使得传值成为一种非常昂贵的操作。为避免这种潜在的昂贵的开销,就不要通过值来传递对象,而要通过引用。这会非常高效,因为没有新的对象被创建。而且避免了“切割问题”。如下所示:
class Window
{
public:
sting name() const;
virtual void display() const;
};
class WindowWithScrollBars: public Window
{
public:
virtual void display() const;
};
void printNameAndDisplay(Window w)
{
cout << w.name();
w.display();
}
WindowWithScrollBarswwsb;
printNameAndDisplay(wwsb);
所有作为WindowWithScrollBars对象的行为都被“切割”掉了。当调用display时,总是Window::display被调用。解决问题的方法就是使用引用。
l 有时不能用引用来传递对象。(条款23)
l 引用几乎都是通过指针来实现的,所以通过引用传递对象实际上是传递指针。因此,如果使一个很小的对象—例如int—传值实际上会比传引用更高效。
相关文章推荐
- effective c++ 条款22: 尽量用“传引用”而不用“传值”
- 条款22: 尽量用“传引用”而不用“传值”
- 条款 22: 尽量用“传引用”而不用“传值”
- 条款22: 尽量用“传引用”而不用“传值”
- effective c++条款22: 尽量用“传引用”而不用“传值”
- [Effective C++第三版•中文版][第20条]尽量使用“引用常量”传参,而不是传值
- 条款3,4:尽量用new和delete而不用malloc和free 尽量使用c++风格的注释
- Effective C++ 条款20:尽量用传引用替换传值
- 尽量用“传引用”而不用“传值”
- 尽量用“传引用”而不用“传值”--------(读后感)
- [Effective C++第三版•中文版][第20条]尽量使用“引用常量”传参,而不是传值
- Effective C++学习笔记:尽量用“传引用”而不用“传值”
- 第20条:尽量使用“引用常量”传参代替传值
- 读书笔记: effective C++; 条款22 和 23, 尽量用传址少用传值。
- 条款2:尽量用<iostream>而不用<stdio.h> [effective C++ 学习笔记]
- 条款2:尽量用iostream而不用stdio.h
- 使用ConcurrentLinkedQueue尽量不用size()
- 条款十二: 尽量使用初始化而不要在构造函数里赋值
- 尽量用pass-by-reference-to-const(const引用)替换pass-by-value(传值)
- c++11 条款22:当使用Pimpl(指向实现的指针)时,在实现文件里定义特定的成员函数