简体   繁体   English

复制 ctor 在下面被调用了多少次?

[英]How many times the copy ctor is called in the following?

In the book I read this question, the answer was 8 times .在我读过这个问题的书中,答案是8 次

  • How?如何?
  • Please explain me.请解释一下。 :) :)

Temp fun1(Temp x)
{
Temp y(x);
Temp z=y;
return z;
}
void main()
{
Temp a;
Temp b=fun1(a);
Temp c=fun1(b);
}
#include <iostream>
class Temp
{
public:
    int a;
    Temp() : a(0) {}
    Temp(const Temp &ref) : a(ref.a)
    {
      std::cout << "Temp(Temp&)" << std::endl;
    }
};

Temp fun1(Temp x)
{
Temp y(x);
Temp z=y;
return z;
}
int main(int ac, char**av)
{
Temp a;
Temp b=fun1(a);
Temp c=fun1(b);
}

Shows 6 calls for clang.显示 6 次叮当声。

786_ g++ -std=c++11 test.cpp
787_ ./a.out
Temp(Temp&)
Temp(Temp&)
Temp(Temp&)
Temp(Temp&)
Temp(Temp&)
Temp(Temp&)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM