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

admin2012-01-20  33

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

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

答案C

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

最新回复(0)