题目--拷贝构造的次数

Posted 4nc414g0n

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题目--拷贝构造的次数相关的知识,希望对你有一定的参考价值。

题目


以下代码共调用多少次拷贝构造函数?

Widget f(Widget u)
{  
 Widget v(u);
 Widget w=v;
 return w;
}
main(){
 Widget x;
 Widget y=f(f(x));
}

知识点

  1. 传值传参和传值返回都会生成一个拷贝对象
  2. 中间对象·临时对象,在一般情况下,一个对象拷贝构造出一个临时对象,一个临时对象再去拷贝构造另一个对象,一般编译器会进行优化,中间对象优化掉,直接第一个拷贝第三个
    (要求:在一个表达式执行的连续步骤中)

例如

f1(Widget());//优化(里面是一个匿名对象)
-------------------
Wideget w;//不优化
f1(w);

分析

  1. 我们知道传值返回的时候会产生临时变量
  2. 看图

    一共7次

以上是关于题目--拷贝构造的次数的主要内容,如果未能解决你的问题,请参考以下文章

C++提高:继承

如何测量代码片段的调用次数和经过时间

C++5大构造函数

编程题编写String类的构造函数拷贝构造函数析构函数和赋值函数

在 Visual Studio 中创建构造函数的代码片段或快捷方式

编程题编写String类的构造函数拷贝构造函数析构函数和赋值函数