是否可以将继承强制设为公共(public)、私有(private)或 protected ?
即:
class block: public shape{ // Only way to inherit from shape
};
// class block: private shape{}; // throws an error
为了让事情更清楚:
- 这不会在当前状态下导致错误
- 我想要实现的目标是强制从
shape
派生的任何类都是公共(public)的。例如。如果一个类尝试从shape
私有(private)继承,则会触发编译错误。
最佳答案
基类通常无法规定其派生类的接口(interface)。这样的约束似乎并不能解决任何问题,并且可以通过限制对派生类的访问来轻松解决“强制公开”问题。
例如,这里的Square
提供了Shape
的公共(public)接口(interface),但由于访问保护,任何人都无法访问Square
。
class SquaresAreAllMine {
private:
class Square : public Shape {};
};
(声明虚拟函数的签名是一个异常(exception),因为派生类无法恢复到非虚拟状态。但这并不是真正的限制性意图。)
关于c++ - 继承类型强制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20591818/