设计不能被继承的类

目录

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

二、代码演示

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关键字有两个作用

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

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

相关推荐
兔兔兔兔128 分钟前
记录C++ 13
开发语言·c++·算法
码行山野赴时序归途33 分钟前
从暴力到最优:三道 C 语言入门题的解法思路
c语言·开发语言·数据结构·算法·leetcode·排序算法
郑州光合科技余经理1 小时前
本地生活平台搭建:统一订单表与多后台切换怎么拆
java·开发语言·前端·系统架构·uni-app·php·ai编程
天下无敌笨笨熊1 小时前
C#视频开发心得
开发语言·c#·音视频
开心大爆炸1 小时前
ubuntu20.4 安装ros1 noetic版本流程
c++
淼澄研学2 小时前
基于Docker与iptables的AI智能体网络隔离实操指南
开发语言·python
莫陌尛.2 小时前
Java核心知识点:直接内存、CPU密集型线程池、并行流对比文档
java·开发语言
西峰u2 小时前
Java多线程初阶完整总结|线程、锁、volatile、等待通知、常见案例
java·开发语言·jvm
夜雨声烦丿2 小时前
从需求到页面:日期计算器应用的 ArkTS 原生实现
开发语言·javascript·华为·harmonyos