CppCoreGuidelines C.132 不要不明所以的将一个函数设置为虚的
17 December 2022
C.132: Don’t make a function virtual
without reason
理由
多余的虚函数,会增加运行时间和对象内存大小。虚函数是能够被重载,这就在继承类中打开大门迎接错误了。虚函数确保在模板化的层级中代码可复用。
例子
template<class T> class Vector { public: // ... virtual int size() const { return sz; } // bad: what good could a derived class do? private: T* elem; // the elements int sz; // number of elements };
你根本不会通过基类使用这种 “ vector ”的继承类。
强化
- 标记某个类有虚函数,却不会有继承类
- 标记某个类的所有成员函数都是虚的,并有对应的实现。