单选题 有以下程序: #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类的构造函数被调用的次数是( )。
【正确答案】 C
【答案解析】[解析] obj1(10) 执行一次构造函数,obj2(0) 也执行一次构造函数;obj3(obj1) t3t.obj1作为参数执行一次构造函数;fun(obji3) 中的temp(p)将执行一次构造函数,而fun本身是以按值传递参数,形参在fun函数内也要分配独立的空间,所以也要执行一次构造函数,其返回结果也是TestClass类型的,同样需要执行一次构造函数,所以一共要执行4次。