我正在阅读一些有关 C++17 的材料,我有一个关于聚合之间继承的问题。
如果一个聚合继承了另一个聚合,这不是一个问题吗?没有切片和内存泄漏的风险吗?我认为既然有继承,就应该有虚析构函数。
如果一个聚合继承自另一个聚合,这不是一个问题吗?
不,本身不是。这完全取决于你如何使用它。
没有切片风险吗
我不认为这是一种风险。您可以将从派生类创建的对象传递给接受基类引用的函数,然后它可以对基类成员进行操作。
和内存泄漏?
派生类的对象在超出范围时会销毁其成员,所以事实并非如此。
我想既然有as继承,就应该有虚析构函数。
仅当您的目标是通过基类指针销毁派生类的对象时,您才真正需要
virtual
析构函数。