Vin*_*ent 6 c++ optimization performance inheritance
在使用-O3编译的C++中,没有虚拟化的继承在以下方面具有成本:
如果答案是肯定的:为什么?
举个例子:MyClass1和MyClass2在性能和内存方面是否相同?

执行时间处理时间
什么?函数是静态解析的,因此函数调用是相同的.MyClass1的构造函数将调用基类的构造函数,它的析构函数将调用基类的析构函数,因此对于构造和销毁可能会有一些开销.也许吧.一些编译器可能会优化呼叫.
记忆
这将是相同的,两者都只有一个成员double.理论上.取决于我猜的实现,因为它不是标准规定的,但最常见的是没有内存开销.
请注意,MyClass1通过指针删除对象会Derived导致未定义的行为,因为没有virtual析构函数.
注意2没有多态的继承是代码气味.不是说这是错的,但在大多数情况下,成分更好.