【发布时间】:2010-11-24 21:14:17
【问题描述】:
class Temp
{
private:
~Temp() {}
friend class Final;
};
class Final : virtual public Temp
{
public:
void fun()
{
cout<<"In base";
}
};
class Derived : public Final
{
};
void main()
{
Derived obj;
obj.fun();
}
上面的代码试图实现不可继承的类(final)。但是使用上面的代码仍然可以创建派生对象,为什么?
只有将 ctor 设为私有时才能实现所需的功能,我的问题是为什么在 dtor 私有的情况下无法实现?
【问题讨论】:
-
看起来像 Visual Studio 的缺陷。
-
这篇文章:cpptalk.wordpress.com/2009/09/01/final-frozen-classes-in-cpp 解释并展示了如何在 C++ 中创建最终(冻结)类。非常欢迎您来看看。
标签: c++ inheritance final virtual-inheritance