有以下程序: #include<iostream> using namespace std; class TestClass { public: TestClass(int n){number=n;} //拷贝构造函数 TestClass(TestClass&other){number=other.number;} ~TestClass(){} private:int number; }; TestClass fun(TestClass P) {TestClass temp(p);return temp; } int main() {TestClass obj1(10),obj2(0) ;TestClass obj3(obj 1) ;obj2=fun(obj3) ;return 0: } 程序执行时,TestClass类的构造函数被调用的次数是( )。
A.2
B.3
C.4
D.5
参考答案:C
解析: obj1(10) 执行一次构造函数,obj2(0) 也执行一次构造函数;obj3(obj1) t3t.obj1作为参数执行一次构造函数;fun(obji3) 中的temp(p)将执行一次构造函数,而fun本身是以按值传递参数,形参在fun函数内也要分配独立的空间,所以也要执行一次构造函数,其返回结果也是TestClass类型的,同样需要执行一次构造函数,所以一共要执行4次。