试题与答案

有如下程序: #include<iostream> using namespac

题型:单项选择题

题目:

有如下程序:
#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变量,所以还需要执行一次拷贝构造函数,所以一共要执行两次普通构造函数(非拷贝构造函数)与三次拷贝构造函数。

试题推荐
微信公众账号搜索答案