有如下程序: #include using namespace std; class TestClass { public: TestClass(){cout

admin2012-12-29  27

问题 有如下程序:
    #include
    using namespace std;
    class TestClass
    {
    public:
    TestClass(){cout<<“default constructorkn”;}
    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()\n”;
    d=userCode(a);
    return 0:
    }
    在执行过程中,构造函数TestClass()和TestClass(constTestClass &x)被调用的次数分别是(             )。

选项 A、1和1
B、1和2
C、2和3
D、2和4

答案C

解析 在主函数中定义了两个TestClass类型的变量a,d,因此执行两次构造函数TestClass ()。接下来执行d=userCode(a);,在执行该函数时,由于userCode采用了传值方式来传递参数,所以要调用一次TestClass(const TestClass &x)。在函数userCode内部TestClass c(b);语句又调用了一次拷贝构造函数,由于函数userCode返回的不是引用,而是一个TestClass变量,所以还需要执行一次拷贝构造函数,所以一共要执行两次普通构造函数(非拷贝构造函数)与三次拷贝构造函数。
转载请注明原文地址:https://jikaoti.com/ti/1wL0FFFM
0

最新回复(0)