有如下程序:
#include<iostream>
using namespace std;
class TestClass
public:
TestClass()cout<<"default constructor\n";
TestClass(const TestClass &x)cout<<"copy constructor\n";
;
TestClass userCode(TestClass b)TestClass c(b);return c;
int main()
TestClass a,d;
cout<<"calling userCode()\a";
d=userCode(
A.;
ret
参考答案:C
解析: 在主函数中定义了两个TestClass类型的变量a,d,因此执行两次构造函数TestClass()。接下来执行d=userCode(a);在执行该函数时,由于userCode采用了传值方式来传递参数,所以要调用一次TestClass(const TestClass &x)。在函数userCode内部TestClass c(b);语句又调用了一次拷贝构造函数,由于函数userCode返回的不是引用,而是一个TestClass变量,所以还需要执行一次拷贝构造函数,所以一共要执行两次普通构造函数(非拷贝构造函数)与三次拷贝构造函数。