c++如何生成一个不能被继承的类

来源:互联网 发布:涂子沛 大数据 编辑:程序博客网 时间:2024/06/05 04:39

在java 中final  可以定义 一个类不能被继承,c++中没有这个,但是c++可以实现这个类。

大家知道union 是不能被继承的

1.union,匿名类


union  finaClass

{

public:

  class 

{

 .......。。。。。。。

} data


};

finalClass finaData;

这样匿名类只能用,不能被继承。

2.利用虚继承


template<typename T> class Base
{
public :
friend T;
private : 
Base(){ cout<<"base"<<endl;}
~Base(){}


};


class FinalClass :virtual public Base<FinalClass>
{
public :
FinalClass()
{
cout<<"final class"<<endl;
}
};


class CC :public FinalClass  // 错误,CC无法访问 Base构造函数,该构造函数为private ;
{
public :
CC(){cout<<"cc"<<endl;}
};



原创粉丝点击