相关疑难解决方法(0)

为什么复制构造函数不像默认构造函数或析构函数那样"链接"?

这可能是一个明显答案或重复的问题.如果有,抱歉,我会删除它.

为什么不复制构造函数(如默认ctors或dtors),以便在调用派生类的复制构造函数之前调用基类的复制构造函数?对于复制构造函数和析构函数,它们分别在从base-to-derived和derived-to-base的链中被调用.为什么复制构造函数不是这种情况?例如,这段代码:

class Base {
public:
    Base() : basedata(rand()) { }

    Base(const Base& src) : basedata(src.basedata) {
        cout << "Base::Base(const Base&)" << endl;
    }

    void printdata() {
        cout << basedata << endl;
    }

private:
    int basedata;
};

class Derived : public Base {
public:
    Derived() { }

    Derived(const Derived& d) {
        cout << "Derived::Derived(const Derived&)" << endl;
    }
};


srand(time(0));


Derived d1;      // basedata is initialised to rand() thanks to Base::Base()

d1.printdata();  // prints the random number

Derived d2 = …
Run Code Online (Sandbox Code Playgroud)

c++ constructor copy-constructor

19
推荐指数
1
解决办法
9533
查看次数

标签 统计

c++ ×1

constructor ×1

copy-constructor ×1