gpt4 book ai didi

c++ - 我应该在基类中声明所有函数为虚函数吗?

转载 作者:可可西里 更新时间:2023-11-01 16:28:30 26 4
gpt4 key购买 nike

当我声明一个基类时,我应该将其中的所有函数都声明为虚函数,还是应该有一组虚函数和一组我确定不会被继承的非虚函数?

最佳答案

一个函数只需要是虚函数当且仅当派生类将以不同的方式实现该函数。

例如:

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;
}
};

因此,我会错误地认为没有任何虚拟的东西,除非您事先知道您打算覆盖它或直到您发现您需要这种行为。唯一的异常(exception)是析构函数,对于它,几乎总是您希望它在基类中是虚拟的。

关于c++ - 我应该在基类中声明所有函数为虚函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/834314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com