effective C++笔记之条款22:尽量使用“传引用”而不用“传值”


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—传值实际上会比传引用更高效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值