在使用 -O3 编译的 C++ 中,没有虚拟性的继承是否会产生以下成本:
如果答案是肯定的:为什么?
例如:MyClass1 和 MyClass2 在性能和内存方面等效吗?
执行时间处理时间
属于什么?函数是静态解析的,因此函数调用是相同的。MyClass1
的构造函数将调用基类的构造函数,其析构函数将调用基类的析构函数,因此对于构造和销毁可能会有一些开销。Maybe。某些编译器可能会优化调用。
memory
这将是相同的,两者都只有一个成员double
。理论上来说。我猜这取决于实现,因为标准没有强制要求,但最常见的是不会有内存开销。
Note删除一个对象MyClass1
通过一个指针Derived
导致未定义的行为,因为没有virtual
析构函数。
Note 2没有多态性的继承是一种代码味道。并不是说这是错误的,但在大多数情况下组合更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)