【发布时间】:2020-04-23 19:24:24
【问题描述】:
我在单个 cpp 文件中有以下代码:
class Base
{
public:
//constructor
Base() = delete;
};
class Derived : public Base
{
public:
//copy constructor
Derived( const Derived & other ){};
};
int main( int argc, char* argv[] )
{
//empty
}
但是编译cpp文件会出错
exp.cpp:在复制构造函数“Derived::Derived(const Derived&)”中:
exp.cpp:15:37:错误:使用已删除的函数“Base::Base()”
Derived(const Derived & other){};
exp.cpp:7:5: 注意:这里声明
Base() = 删除;
^~~~
我不明白为什么。为派生类定义复制构造函数时,基类默认构造函数如何发挥作用?
【问题讨论】:
-
如果你写得正确,它不会。基类也需要一个拷贝构造函数,你需要调用它派生拷贝构造函数。
标签: c++ constructor copy-constructor derived-class