/**********************************************************************
题目:用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++实现一个不能被继承的类,适合初学者
详细介绍了继承类的构造函数,基类的构造函数是不能继承的,在声明派生类时,派生类并没有把基类的构造函数继承过来,因此,对继承过来的基类成员初始化的工作也要由派生类的构造函数承担。
如果大家熟悉java的话应该知道java中有一种类不能被继承,那是final类。这种类有很多用处,尤其是在大的项目中控制类的继承层次。使子类数量不至于爆炸。在使用了多继承的类层次中这也是防止出现菱形继承层次结构的...
派生类可以继承父类的公有成员,但是不能继承其私有成员。类继承的语法为 class 类名(被继承类类名)。 实例:使用类的继承性编写程序,并输出结果。 class A: #父类 def init(self): self.str=[] def ft(self,...
Qt5学习:常见类继承关系 简明示意图 ,常用的qt类,缩放后 也是相对比较清楚,暂时,只搞到这一个,看到很多其他的qt类图关系的图都需要很多的积分,这个资源不需要积分,希望能帮助到需要的人。
本文实例展示了C++实现不能被继承的类的方法,对于C++初学者而言有一定的学习借鉴价值。具体实现方法如下: 方法一: #include using namespace std; class A { public: static A* getInstance(); static void ...
C#继承窗体的设计C#继承窗体的设计C#继承窗体的设计C#继承窗体的设计C#继承窗体的设计
多重继承是指一个子类通过继承的方式来... print("要吃东西,不能进行光合作用") #大类 class Mammal(Animal): def how_to_birth(self): print("胎生") class Bird(Animal): def how_to_birth(self): print("卵生")
在Java中定义了关键字final,被final修饰的类不能被继承。但在C++中没有final这个关键字。 首先想到的是在C++ 中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数...
抽象类与抽象方法由abstract修饰 ...1.抽象类不能被实例化,只能被其他类继承 2.继承抽象类的子类必须把抽象类中的所有抽象成员都重写(实现)(除非子类也是抽象类。) 3.抽象类就是为了重写→多态。
我们知道,基类的private成员在派生类中不能被访问。那么,友元函数能否继承。(举例说明)
示例 7 接口 接口就是某个事物对外提供的一些功能的申明 可以利用接口实现多态,同时接口也弥补了Java单一继承的弱点 使用interface关键字定义接口 一般使用接口声明方法或常量,接口中的方法只能是声明,不能是具体...
在Java 中定义了关键字final,被final修饰的类不能被继承,C++中如何实现,下面我们来看一个例子
子类不能继承父类的私有属性和私有方法 IV object类 object是python中最基础类的名字,不建议被翻译理解。 所有类在定义的时候,默认继承object类 保留属性和保留方法本质上是object类的属性和方法 V 两个与内存
多重继承是一个子类从多个父类中继承属性和方法。C++, Common Lisp是时下支持多重继承的流行语言。那java为何不能多继承呢,下面小编带大家来一起学习一下吧
OOP设计思想中类的继承相比来说更为灵活,可以添加新的数据成员和方法,也能修改继承下来方法的实现细节,同时还保留了原有的代码。开始进入正题。 二、类继承示例 场景如下:现需要记录乒乓球运动成员的信息,包括...
这个是本人最近编制的一个窗体继承类。程序代码很短,但很有用,解决了Delphi程序设计中窗体及其包含的控件自适应不同屏幕分辨率的问题。 即你的程序可能是在1024X768屏幕分辨率下设计的,但是需要在屏幕分辨率为...