在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;}
};
本文介绍两种在 C++ 中实现类似 Java 中 final 类的方法:一是通过使用 union 和匿名类来阻止继承;二是利用虚继承和友元类机制防止子类访问基类的私有构造函数。

被折叠的 条评论
为什么被折叠?



