class VString{//默认的存取控制方式就是私有
VString();
VString(char*);
VString(string);
friend class String;
};
class String:virtual VString{
public:
String(){
//写你的代码
}
String(char*){
//写你的代码
}
String(string){
//写你的代码
}
};
String无法被继承,因为继承它的类会试图调用VString的私有构造函数。而String是Vstring的友元类,所以能继承VString。
VString也无法被继承,它的构造函数为私有的。但也不满足要求。因为它无法实例化对象。
或者用C++11的标准,加入关键词final
Reference
[1].http://ilewen.com/questions/2910
[2].http://blog.youkuaiyun.com/lazybin/article/details/8372793