首页 > 编程语言 > 详细

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

时间:2014-08-28 22:37:56      阅读:488      评论:0      收藏:0      [点我收藏+]

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++中设计一个类,使其不能继承

原文:http://www.cnblogs.com/ljygoodgoodstudydaydayup/p/3942416.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!