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

admin2020-10-21  30

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

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

答案C

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

最新回复(0)