class ClassSealer {
private:
friend class Sealed;
ClassSealer() {}
};
class Sealed : public ClassSealer
{
// ...
};
class FailsToDerive : public Sealed
{
// This class is capable of being instantiated
};
上面没有封闭类,但下面的工作,为什么?C++中的密封类和虚拟继承
class ClassSealer {
private:
friend class Sealed;
ClassSealer() {}
};
class Sealed : public virtual ClassSealer
{
// ...
};
class FailsToDerive : public Sealed
{
// Cannot be instantiated
};
这里发生了什么事?虚拟继承在这里扮演什么角色?
这种技术是过时的。改为使用新的关键字'final'。 –
@RichardHodges谢谢。但我想知道上面提到的特殊行为背后的原因。 – q126y