我有一个抽象的基类。假设,我希望派生类也是抽象的,并将纯虚函数的实现责任留给更低级的类。这样做的最佳方式是什么?
class Animal {
public:
virtual void makeNoise() = 0;
};
class Dog : public Animal {
};
将它留空是否更好,或者我应该这样做:
class Dog : public Animal {
public:
virtual void makeNoise() = 0;
};
或忽略虚拟关键字如何:
class Dog : public Animal {
public:
void makeNoise() = 0;
};
最合适的方式是什么?
答案 0 :(得分:2)
不同选项之间没有功能差异(因为您不会更改辅助功能),但
=0
表示)是虚拟的 - 但它与{中引入的其他(纯)虚函数的声明不太一致。 {1}}。 我只会在
时恢复到选项2Dog
是您分发给其他人的图书馆的一部分Dog
本身不应被"典型用户"进一步使用。直接这样,从Animal
派生的客户端拥有关于他必须在一个地方实施哪些功能的所有必要信息。