有如下程序: #include<iostream> using namespace std; class TestClass { public: TestClass(){cout<<"default constructo

admin2012-01-20  31

问题 有如下程序:    #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);    return 0;    }    在执行过程中,构造函数TestClass()和TestClass(const TestClass &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/0SL0FFFM
0

随机试题
最新回复(0)