相关疑难解决方法(0)

709
推荐指数
11
解决办法
17万
查看次数

为什么隐式复制构造函数调用基类复制构造函数而定义的复制构造函数不?

考虑一个类层次结构,其中A是基类并B派生自A.

如果未定义复制构造函数B,编译器将合成一个.调用时,此复制构造函数将调用基类复制构造函数(即使是合成的构造函数,如果用户没有提供).

#include <iostream>

class A {
    int a;
public:
    A() {
        std::cout << "A::Default constructor" << std::endl;
    }

    A(const A& rhs) {
        std::cout << "A::Copy constructor" << std::endl;
    }
};

class B : public A {
    int b;
public:
    B() {
        std::cout << "B::Default constructor" << std::endl;
    }
};

int main(int argc, const char *argv[])
{
    std::cout << "Creating B" << std::endl;
    B b1;
    std::cout << "Creating …
Run Code Online (Sandbox Code Playgroud)

c++ language-design copy-constructor

35
推荐指数
2
解决办法
1万
查看次数