C++关于构造函数和析构函数调用次数的问题

已知类C定义了缺省构造函数、拷贝构造函数、析构函数,并重载了赋值运算符和流输出运算符。现有如下代码段:
C testFunc(C c) {cout<<c; return c; }
int main()
{ C c1, c2 = testFunc(c1); return 0; }
则在该代码段的main函数执行期间,共调用了类C的拷贝构造函数和析构函数分别多少次?D

A.0和2
B.1和2
C.2和2

D.2和3

没问题啊。
参数传递的时候第一次拷贝构造调用,
在函数返回的时候赋值给c2 再次调用了拷贝构造。
析构的话:c1 c2 c 三次追问

不是返回了一个C的对象吗,这里不是引用,不用调用一次拷贝函数吗

追答

我跟踪查看了汇编代码执行情况。
第一次拷贝构造是在参数传递的时候。
第二次拷贝构造是在返回的时候。
对C2进行赋值,其实是将函数中临时创建的那个对象给了C2,没进行拷贝构造

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-25
传递参数和返回参数各一次拷贝构造函数,所以是2次;
有两个对象c1 c2,外加函数返回的一个临时对象,所以共3个对象,故析构函数3次;
相似回答