已知类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
不是返回了一个C的对象吗,这里不是引用,不用调用一次拷贝函数吗
追答我跟踪查看了汇编代码执行情况。
第一次拷贝构造是在参数传递的时候。
第二次拷贝构造是在返回的时候。
对C2进行赋值,其实是将函数中临时创建的那个对象给了C2,没进行拷贝构造