【12】设计一个不能被继承的类

简介: 题目:用C++实现一个不能被继承的类思路:1. 在C++中如果一个类能够被继承,那么子类的对象在构造的时候会先调用父类的构造函数,再执行自己的构造函数。


题目:用C++实现一个不能被继承的类


思路:1. 在C++中如果一个类能够被继承,那么子类的对象在构造的时候会先调用父类的构造函数,再执行自己的构造函数。子类对象在销毁的时候会先调用本身析构函数再调用父类析构函数

           2. 如果我们把一个类的构造函数和一个类的析构函数权限设置为private,那么当一个类试图去继承的时候会报错,可以达到不能被继承的效果

           3. 怎么得到类的实例呢?和单例模式类似,我们可以采用静态成员函数来得到类的实例,销毁和时候也直接利用类的静态成员函数,因为静态成员函数属于类。


class A{
public:
	static A* GetInstance(void);
	static void DeleteInstance(A **instance);
private:
	A(void){}
	~A(void){}
};

//实现静态成员函数
A* A::GetInstance(void){
    return new A();
}

void A::DeleteInstance(A **instance){
    delete (*instance);
	(*instance) = NULL;
}

int main(){
	//样例
	A *instance = A::GetInstance();
	A::DeleteInstance(instance);
	instance = NULL;
	return 0;
}



目录
相关文章
|
8月前
类特性(抽象类)
类特性(抽象类)
56 1
|
4天前
|
设计模式 存储 Java
【类图、类与类的关系、多态】
学习Java面向对象,掌握UML类图绘制,包括14种图形,使用PowerDesigner演示类图创建。理解类与类的关系,如继承、实现、依赖、关联、聚合、组合,以及`instanceof`关键字。学习简单工厂设计模式,实现多态,理解其在面试和设计原则中的重要性。通过实例操作,如String类常用方法、汽车与4S店案例,加深对面向对象概念的理解。最后,探讨面向对象设计原则,如单一职责、开闭原则、里氏替换原则、依赖倒置、接口隔离、迪米特法则和组合/聚合复用原则。
32 1
|
2月前
|
算法 编译器 C语言
【C/C++ 编程题 01】用C++设计一个不能被继承的类
【C/C++ 编程题 01】用C++设计一个不能被继承的类
24 0
|
2月前
|
编译器 C++
【C++】—— 特殊类设计
【C++】—— 特殊类设计
|
4月前
|
设计模式 Java C++
C++之特殊类的设计
C++之特殊类的设计
10 0
|
7月前
|
设计模式 安全 Java
【C++】特殊类设计(下)
【C++】特殊类设计(下)
|
9月前
|
Java
面向对象编程基础:类、对象、封装、继承和多态
面向对象编程基础:类、对象、封装、继承和多态
90 0
|
11月前
继承类的方法
继承类的方法
86 0
|
11月前
|
设计模式
从“封装、继承、多态”看构建知识网
从“封装、继承、多态”看构建知识网
44 0