首页 > 代码库 > C++中设计一个类,使其不能继承

C++中设计一个类,使其不能继承

1.c11中可以直接使用final关键字使得该类不能被继承

2.派生类用调用基类的构造函数来初始化基类部分,若将基类构造函数声明为private,则实例化派生类成员时链接出错,但是这样基类也不能实例化,编译出错

3.将一个类的构造函数声明为private,则该类及其子类都不能实例化,但是若把子类声明为该类的友元,则该子类可以调用基类的private成员函数,也就是说此时子类可以实例化,而且这时候子类的子类也可以初始化,因为子类的子类初始化基类部分是调用子类的构造函数,而子类是可以正常初始化的,所以想到虚继承,子类虚继承自父类,子类的子类正常继承自子类,此时子类和子类的子类共用一个指针,该指针指向基类部分。

class A{private:    A(){}    friend class B;};class B : virtual A{};class C : public B{};void main(){    B b;//ok    C c;//false}

 

C++中设计一个类,使其不能继承