C++继承相关内容(三)

news2024/12/28 2:57:31

目录

一.单例模式和相关习题

1.不能在外部环境创建该类对象

方法:

代码:

2.创建一个不能被继承的类

方法:

3.创建一个不能被继承,但是可以在外部环境中创建该类对象

方法:

​编辑

4.一个能被继承的类,但不能在外部环境中创建该类的对象


一.单例模式和相关习题

前情概要:无论是公有继承还是私有继承,派生类的方法是可以访问自身的公有,保护和私有的,还可以访问基类的保护和公有的。在派生类中,基类的保护类似于公有,是可以访问的。但是在外部环境中是不可以访问保护和私有属性的对象或方法。

1.不能在外部环境创建该类对象

方法:

单例模式:只能创建一个对象,只能使用方法去调动静态对象,而静态对象只有一份,因此可以达到只能创建一个对象,而其的构造函数被私有化,所以不能在外部环境创建该类对象。为了防止用一个对象去赋值另一个对象我们将其赋值重载删除,为防止用一个对象初始化另外一个对象,我们将其的拷贝构造函数删除,从而达到只能通过调用公有的方法去访问私有的构造函数。

代码:

class Single {
	int value;
private:
	Single(int x = 0) :value(x) {}
	Single(const Single&)=delete;
	Single& operator=(const Single&)=delete;
public:
	~Single(){}
	static Single& getInstance() {
		static Single s(10);
		return s;
	}
};
int main() {
	Single& s2 = Single::getInstance();//只能调用公有的方法去调用私有的构造函数
	//Single* sp = (Single*)malloc(sizeof(Single));
	//*sp = s2;为了防止一个对象赋值另外一个对象,我们把其赋值语句删除掉
}

2.创建一个不能被继承的类

方法:

将构造函数设置为私有的,派生类只能访问基类的保护和公有的属性和方法,不能访问基类的私有属性

class Object {
private:
	Object() {

	}
public:
	~Object(){}
};
class Base :public Object {
public:
	Base() :Object() {

	}
};

此时就不能继承Object这个类,因为他的构造方法我们无法访问到

3.创建一个不能被继承,但是可以在外部环境中创建该类对象

方法:

final关键字 表示最终类不能被继承,但是该类可以在外部环境中可以创造对象,因为其构造函数是公有属性

代码:

class Object final{
private:
	
public:
	Object() {}
	~Object(){}
	void show()const{}
};
class Base :public Object {
public:
	Base() :Object() {}
};
int main() {
	Object o1;
	o1.show();
}

4.一个能被继承的类,但不能在外部环境中创建该类的对象

方法:

将构造函数等变成保护类型:一个能被继承的类,但不能在外部环境中创建该类的对象
限制派生类对象不可拷贝和赋值:将基类的拷贝和赋值删掉

代码:

class Object {
private:
protected:
	Object() {}
public:
	Object(const Object&) = delete;
	Object& operator=(const Object&) = delete;
	~Object(){}
	void show()const{}
};
class Base :public Object {
public:
	Base() :Object() {}
};
int main() {
	Object o1;
	o1.show();
}

好了,关于c++继承相关的内容就学习到介里啦,后续就是c++的多态相关知识,包括虚函数,编联等相关内容。还有就是到了期末复习周呜呜呜,可能更新速率会慢一些

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/623051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【WinForm】WinForm常见窗体技术汇总

文章目录 前言一、窗体调用外部程序与渐变窗体1、效果2、界面设计3、代码 二、按回车键跳转窗体中的光标焦点1、效果2、界面设计3、代码 三、剪切板操作1、效果2、界面设计3、代码 四、实现拖放操作1、效果2、界面设计3、代码 五、移动的窗体1、效果2、界面设计3、代码 六、抓不…

聚观早报 | OpenAI 没有上市计划;马斯克称未来房价下跌将加速

今日要闻:OpenAI 没有上市计划;马斯克称未来房价下跌将加速;Coinbase被SEC起诉,股价闪崩;库克:苹果正密切关注ChatGPT等;推特正致力于开发视频直播产品 OpenAI没有上市计划 当地时间周二&…

068:cesium lookAtTransform围绕一个固定点上下左右旋转查看

第068个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中查看一个固定的点的情况,从上下左右不同的维度进行查看。这里面使用lookAtTransform这个操作函数。lookAtTransform(transform, offset),这里的offset偏移量可以是笛卡尔坐标或航向/俯仰/范围。 直接复制下面…

Java集合常见面试题集锦

1、介绍Collection框架的结构 集合是Java中的一个非常重要的一个知识点,主要分为List、Set、Map、Queue三大数据结构。它们在Java中的结构关系如下: Collection接口是List、Set、Queue的父级接口。 Set接口有两个常用的实现类:HashSet和Tre…

libmodbus编程笔记

一 基础知识 地址映射值 Modbus寄存器 Modbus寄存器地址分配 Modbus ASCII消息帧格式 Modbus RTU帧格式 Modbus RTU相邻帧间隔 Modbus寻址范围 PDU与ADU的关系 Modbus TCP/IP ADU与PDU的关系 Modbus TCP/IP与Modbus串行消息构成对比 Modbus TCP/IP协议最大帧数据长度为260字…

人工智能-实验四

第四次实验 一.实验目的 ​ 了解深度学习的基本原理。能够使用深度学习开源工具。学习使用深度学习算法求解实际问题。 二.实验原理 1.深度学习概述 ​ 深度学习源于人工神经网络,本质是构建多层隐藏层的人工神经网络,通过卷积,池化&…

【2 微信小程序学习 - 小程序的架构.配置.app与page】

1 小程序的架构模型 为了避免卡顿,优化性能,小程序使用双线程模型. 可以理解为创建了两个webview,一个负责渲染界面,一个负责js脚本处理,通过微信客户端的native进行中转交互. 2 小程序的配置文件 在多人开发中,一般不修改project.config.json避免冲突 ,而是单人修改project…

Intradeco通过适用于Excel的Liquid UI自动执行SAP MM并节省80%的处理时间

背景 Intradeco为服装制造提供整体方法,涵盖所有阶段:从构思阶段到最终产品分销。它已发展成为一家全球垂直制造公司,客户遍布美国、墨西哥和加拿大。 挑战 提高运营效率 原因:人员必须浏览多个 SAP 事务才能为新材料创建采购订单…

2023年牛客网最新Java面试八股文附答案整理(不管工作几年都可以看看)

很多人都说今年对于 IT 行业根本没有所谓的“金三银四”“金九银十”。在各大招聘网站或者软件上不管是大厂还是中小公司大多都是挂个招聘需求,实际并不招人;在行业内的程序员基本都已经感受到了任老前段时间口中所谓的“寒气”。 虽然事实确实是如此&a…

学顶教育:初级会计师领取证书有关事项

初级会计师职称证书是国家组织考试后颁发的专业技术资格证书,与纸质证书和电子证书具有同等法律效力。 考取初级会计师职称证书的有关事项如下: 1、领取方式 初级会计职称证书的领取方式有两种:现场领取和邮寄领取。 考生可任选其一。 部分…

浪涌保护器和避雷器的区别

线路在使用过程中,由于短路或雷击,会突然产生巨大的能量。一旦这种能量通过线路进入家庭或其他电力线,就会造成设备烧毁,造成生命和财产损失。直流电涌保护器可以通过保护组件立即将巨大的能量吸入地面端子,从而保护您…

[架构之路-207]- 常见的需求分析技术:实用的需求分析与建模详解过程(实操性强)

目录 1.1 需求分析建模的要点与误区 1.1.1 需求分析到底做什么 1.1.1.1 分解的方法 1.1.1.2 提炼、合并、重组 1.1.1.3 消除矛盾 1.1.2 建模的目标和要点 1.1.2.1 建模的目的 1.1.2.2 建模的要点与原则 1.1.3 选择建模工具的要点 1.1.3.1 正确认识建模方法论 1.1.3.…

肠道菌群检测在临床感染判别中的应用

谷禾健康 感染是人类面临的健康威胁之一。各种病原体,如细菌、病毒、真菌、寄生虫等,存在于我们日常接触的环境、物品、食物等中。一些常见的感染病例包括感冒、流感、腹泻、组织器官或血液感染等,在全球范围内广泛传播。这些疾病的传播方式多…

MAYA活塞动画

给组打关键 让下面带动上面一起运动 创建定位器 放在中间 创建两个定位器 一个定位器放在连动秆下面,让定位跟物体一块动 创建目标约束 完成

python基础----07-----异常、模块、包

一 了解异常 当检测到一个错误时,Python解释 器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的BUG。 二 异常的捕获 当我们的程序遇到了BUG,那么接下来有两种情况: …

AcWing算法提高课-1.3.14开心的金明

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 金明今天很开心&#xff0c;家里购置的新房就要领钥匙了&#xff0c;新房里有一间他自己专用的很宽敞的房间。 更让他高兴的是&…

Vue.js中的Render函数和模板语法

Vue.js中的Render函数和模板语法 在Vue.js中&#xff0c;有两种主要的方式来构建组件&#xff1a;使用模板和使用render函数。模板语法是Vue.js中最常见的方式&#xff0c;它是一种基于HTML的语法&#xff0c;能够直接在HTML文件中定义组件的结构和行为。而render函数则是一种…

公司新来一00后,真让人崩溃...

2022年已经结束结束了&#xff0c;最近内卷严重&#xff0c;各种跳槽裁员&#xff0c;相信很多小伙伴也在准备今年的金九银十的面试计划。 在此展示一套学习笔记 / 面试手册&#xff0c;年后跳槽的朋友可以好好刷一刷&#xff0c;还是挺有必要的&#xff0c;它几乎涵盖了所有的…

设计模式(五):创建型之建造者模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 目录 一、…

让ChatGPT来写今年的高考作文,会得几分?

使用最新的ChatGPT4模型&#xff0c;做2023年全国甲卷的高考作文。 作文考试题目如下 人们因技术发展得以更好地掌控时间&#xff0c;但也有人因此成了时间的仆人。这句话引发了你怎样的联想与思考?请写一篇文章。 要求&#xff1a;选准角度&#xff0c;确定立意&#xff0…