在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;}
};