设计一个不能被继承但能正常使用的类.

class A;


class final
{
friend class A;//class关键字不可省略,否则在g++中不能编译通过
private final()
{}
};


class A : virtual public final
{
public:
A()
{}


};


class B : public A
{
public:
B()
{
}
};

class A 是final的friend,所以A可以调用final的构造函数。
  因为A虚继承了final,往后所有继承A的子类,都必须自己实例化final,以保证final在对象中的唯一性。
所以,B继承A后,需要自己调用虚继承的父类final的构造函数。显然,B不是final的友元,不能访问private中的构造函数。

发布了40 篇原创文章 · 获赞 23 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/suoyudong/article/details/104888227