编译器创建的C ++默认构造函数

时间:2019-01-16 13:09:57

标签: c++

我最近发现了此页面(https://cppinsights.io/)。我尝试一些代码:

class Base {
};

class Derived : public Base {
};

int main() {
  Derived d;
  Base& b = d;
}

我了解编译器会在Base类中创建构造函数,移动构造函数,复制构造函数和析构函数,并且仅Derived类中的构造函数会因为Base类中没有虚拟析构函数。但是当我添加

public :
  ~Base(){}

然后

public :
  virtual ~Base(){}

,我看到了一些构造函数上的差异。第一次加法后,编译器还会在Derrived类中生成移动赋值运算符和析构函数,第二个加法后-虚拟析构函数,赋值运算符和移动赋值运算符。为什么?

0 个答案:

没有答案