`
xitonga
  • 浏览: 587284 次
文章分类
社区版块
存档分类
最新评论

不能被继承的类

 
阅读更多
/**********************************************************************
题目:用C++设计一个不能被继承的类
**********************************************************************/
#include <stdio.h>

// ====================方法一====================
//常规的方法:把构造函数设为私有函数
class SealedClass1
{
public:
    static SealedClass1* GetInstance() 
    {
        return new SealedClass1();
    }
 
    static void DeleteInstance( SealedClass1* pInstance)
    {
        delete pInstance;
    }
 
private:
    SealedClass1() {}
    ~SealedClass1() {}
};

// 如果试图从SealedClass1继承出新的类型,
// 将会导致编译错误。
/*
class Try1 : public SealedClass1
{
public:
    Try1() {}
    ~Try1() {}
};
*/

// ====================方法二====================
//利用虚拟继承
template <typename T> class MakeSealed
{
    friend T;
 
private:
    MakeSealed() {}
    ~MakeSealed() {}
};
 
class SealedClass2 : virtual public MakeSealed<SealedClass2>
{
public:
    SealedClass2() {}
    ~SealedClass2() {}
};

// 如果试图从SealedClass1继承出新的类型,
// 将会导致编译错误。
/*
class Try2 : public SealedClass2
{
public:
    Try2() {}
    ~Try2() {}
};
*/

int main()
{
    return 0;
}
==参考剑指offer
分享到:
评论

相关推荐

    C++不能继承的类

    C++中使类不能继承,文中详细介绍了如何创建一个可以不能被继承的类

    C++实现一个不能被继承的类

    用C++实现一个不能被继承的类,适合初学者

    继承类的构造函数

    详细介绍了继承类的构造函数,基类的构造函数是不能继承的,在声明派生类时,派生类并没有把基类的构造函数继承过来,因此,对继承过来的基类成员初始化的工作也要由派生类的构造函数承担。

    C++中如何使类不能继承

    如果大家熟悉java的话应该知道java中有一种类不能被继承,那是final类。这种类有很多用处,尤其是在大的项目中控制类的继承层次。使子类数量不至于爆炸。在使用了多继承的类层次中这也是防止出现菱形继承层次结构的...

    Python语言基础:类的继承.pptx

    派生类可以继承父类的公有成员,但是不能继承其私有成员。类继承的语法为 class 类名(被继承类类名)。 实例:使用类的继承性编写程序,并输出结果。 class A: #父类 def init(self): self.str=[] def ft(self,...

    Qt5学习:常见类继承关系 简明示意图.pdf

    Qt5学习:常见类继承关系 简明示意图 ,常用的qt类,缩放后 也是相对比较清楚,暂时,只搞到这一个,看到很多其他的qt类图关系的图都需要很多的积分,这个资源不需要积分,希望能帮助到需要的人。

    C++实现不能被继承的类实例分析

    本文实例展示了C++实现不能被继承的类的方法,对于C++初学者而言有一定的学习借鉴价值。具体实现方法如下: 方法一: #include using namespace std; class A { public: static A* getInstance(); static void ...

    C# 继承窗体的设计

    C#继承窗体的设计C#继承窗体的设计C#继承窗体的设计C#继承窗体的设计C#继承窗体的设计

    Python语言基础:类的多重继承.pptx

    多重继承是指一个子类通过继承的方式来... print("要吃东西,不能进行光合作用") #大类 class Mammal(Animal): def how_to_birth(self): print("胎生") class Bird(Animal): def how_to_birth(self): print("卵生")

    用C++编写不能被继承的类

     在Java中定义了关键字final,被final修饰的类不能被继承。但在C++中没有final这个关键字。  首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数...

    1.1:抽象方法与抽象类.pdf

    抽象类与抽象方法由abstract修饰 ...1.抽象类不能被实例化,只能被其他类继承 2.继承抽象类的子类必须把抽象类中的所有抽象成员都重写(实现)(除非子类也是抽象类。) 3.抽象类就是为了重写→多态。

    C++友元与继承

    我们知道,基类的private成员在派生类中不能被访问。那么,友元函数能否继承。(举例说明)

    《java面向对象程序设计-继承和多态》教案.doc

    示例 7 接口 接口就是某个事物对外提供的一些功能的申明 可以利用接口实现多态,同时接口也弥补了Java单一继承的弱点 使用interface关键字定义接口 一般使用接口声明方法或常量,接口中的方法只能是声明,不能是具体...

    C++设计类不能被继承的方法实例讲解

    在Java 中定义了关键字final,被final修饰的类不能被继承,C++中如何实现,下面我们来看一个例子

    python15 类的继承

    子类不能继承父类的私有属性和私有方法 IV object类 object是python中最基础类的名字,不建议被翻译理解。 所有类在定义的时候,默认继承object类 保留属性和保留方法本质上是object类的属性和方法 V 两个与内存

    java为何不能多继承的原因详解

    多重继承是一个子类从多个父类中继承属性和方法。C++, Common Lisp是时下支持多重继承的流行语言。那java为何不能多继承呢,下面小编带大家来一起学习一下吧

    详解C++基础——类继承

    OOP设计思想中类的继承相比来说更为灵活,可以添加新的数据成员和方法,也能修改继承下来方法的实现细节,同时还保留了原有的代码。开始进入正题。 二、类继承示例 场景如下:现需要记录乒乓球运动成员的信息,包括...

    Delphi编制的自适应屏幕分辨率的窗体继承类

    这个是本人最近编制的一个窗体继承类。程序代码很短,但很有用,解决了Delphi程序设计中窗体及其包含的控件自适应不同屏幕分辨率的问题。 即你的程序可能是在1024X768屏幕分辨率下设计的,但是需要在屏幕分辨率为...

Global site tag (gtag.js) - Google Analytics