设计不能被继承的类

目录

一、如何设计不能被继承的类

二、代码演示

1、基类构造函数设置为私有

2、用final修饰类

3、final关键字


一、如何设计不能被继承的类

有两种方式

1、对于C++98,可以将构造函数设置为私有

2、对于C++11,用final修饰类

二、代码演示

1、基类构造函数设置为私有

为什么基类构造函数设置为私有就不能被继承?

1、私有的构造函数对子类是不可见的

2、派生类调用构造函数必须先调用父类的构造函数初始化父类的那一部分

复制代码
//1、对于C++98,可以将构造函数设置为私有
class A
{
public:
private:
	A() {}
};

class B : public A
{
public:
};

int main()
{
	B b;//error A不能被B继承
}

//////////////////////////////////////////////
//基类构造函数设置为私有后,可以通过静态成员函数来获取基类对象
class A
{
public:
	static A GetObject()
	{
		return A();
	}
private:
	A() {}
};

class B : public A
{
public:
};

int main()
{
	A::GetObject();
}

2、用final修饰类

3、final关键字

final关键字有两个作用

一个是修饰类,被修饰的类不能被继承

一个是修饰虚函数,虚函数不能被重写

相关推荐
Escalating_xu9 分钟前
【C 语言】字符函数和字符串函数:从 ctype 到 strtok、strerror 全面解析
java·c语言·开发语言
悠仁さん28 分钟前
【C++】auto
java·前端·c++
郝学胜-神的一滴32 分钟前
C++ Templates 07:编译报错和调试手段与实战技巧
开发语言·c++·后端·软件工程·visual studio
害人终害己41 分钟前
Redisson 连接 Redis 失败 报错解决方案
java·开发语言
何老师的GESP C++进阶课堂41 分钟前
1、数组知识点总结
c++·青少年编程·gesp c++
jimy11 小时前
c++的静态类型和动态类型(二)
开发语言·c++
吠品1 小时前
箭头函数为什么不能 new
开发语言·javascript·原型模式
stolentime1 小时前
AT_arc182_a [ARC182A] Chmax Rush!题解
数据结构·c++·算法·动态规划
longlongzihan1 小时前
LeetCode 189. 轮转数组:从直观模拟到最优原地算法
c++·算法·leetcode
谢亮_vipxieliang1 小时前
PHP 8 新特性:构造器属性提升与实战
开发语言·后端·php