A-A+

有以下程序: #include<iostream> using namespace std;

2022-08-05 20:27:21 问答库 阅读 171 次

问题详情

有以下程序: #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次。

考点:程序