【发布时间】:2016-02-23 20:12:53
【问题描述】:
class ClassSealer {
private:
friend class Sealed;
ClassSealer() {}
};
class Sealed : public ClassSealer
{
// ...
};
class FailsToDerive : public Sealed
{
// This class is capable of being instantiated
};
上面的封类失败,但是下面的工作,为什么?
class ClassSealer {
private:
friend class Sealed;
ClassSealer() {}
};
class Sealed : public virtual ClassSealer
{
// ...
};
class FailsToDerive : public Sealed
{
// Cannot be instantiated
};
这里发生了什么?虚拟继承在这里起什么作用?
【问题讨论】:
-
这种技术已经过时了。请改用新关键字
final。 -
@RichardHodges 谢谢。但我想知道上述特殊行为背后的原因。
标签: c++ inheritance access-control virtual-inheritance sealed