有以下程序: #include using namespace std; class TestClass { public: TestClass(int n){number=n;} //拷贝构

admin2012-12-29  33

问题 有以下程序:
    #include
    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 obj 1(10),obji2(0);
        TestClass obj3(obj1);
        obj2=fun(obj3);
        return 0:
    }
    程序执行时,TestClass类的构造函数被调用的次数是(             )。

选项 A、2
B、3
C、4
D、5

答案C

解析 obj1(10)执行一次构造函数,obj2(0)也执行一次构造函数;obj3(obj1)以obj1作为参数执行一次构造函数;fun(obj3)中的temp(p)将执行一次构造函数,而fun本身是以按值传递参数,形参在fun函数内也要分配独立的空间,所以也要执行一次构造函数,其返回结果也是TestClass类型的,同样需要执行一次构造函数,所以一共要执行4次。
转载请注明原文地址:https://jikaoti.com/ti/UVL0FFFM
0

最新回复(0)