码迷,mamicode.com
首页 > 编程语言 > 详细

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

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

标签:style   blog   color   使用   div   log   sp   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++中设计一个类,使其不能继承

标签:style   blog   color   使用   div   log   sp   c   c++   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!