effective c++ 条款20(用const引用代替值传递)

来源:互联网 发布:菲尔普斯 孙杨 知乎 编辑:程序博客网 时间:2024/06/16 22:29

代码如下:
这里写图片描述

当执行如下代码时
这里写图片描述

内部执行过程如下;
这里写图片描述

简而言之:效率低下
解决办法
这里写图片描述
此时不会调用任何构造和析构函数,执行效率高

const引用还可以防止“切割问题”
这里写图片描述

当执行以下函数时
这里写图片描述
wwsb会被转换为window,那么子类中的所有特征信息就被切除,所以此时执行的是window的display,而不是子类的display
解决办法也是传const引用。

除以上两个问题之外,如果拷贝构造函数的形参是值传递,那么会造成拷贝构造函数的无限调用,引起栈溢出。

0 0
原创粉丝点击