如果派生类将以不同的方式实现该函数,则函数只需要是虚拟的.
例如:
class Base {
public:
void setI (int i) // No need for it to be virtual
{
m_i = i;
}
virtual ~Base () {} // Almost always a good idea
virtual bool isDerived1 () // Is overridden - so make it virtual
{
return false;
}
private:
int m_i;
};
class Derived1 : public Base {
public:
virtual ~Derived () {}
virtual bool isDerived1 () // Is overridden - so make it virtual
{
return true;
}
};
Run Code Online (Sandbox Code Playgroud)
因此,除非您提前知道您打算覆盖它或直到您发现需要该行为,否则我会错误地认为没有任何虚拟内容.唯一的例外是析构函数,对于它来说,它几乎总是希望它在基类中是虚拟的.
| 归档时间: |
|
| 查看次数: |
3374 次 |
| 最近记录: |