【C++学习】类和对象--继承

news2025/1/19 2:17:50

基本语法

继承是面向对象三大特性之一,有些类和类之间存在特殊关系。

 下级别成员除了拥有上一级的共性还有自己的特点。

这个时候我们就可以考虑利用继承的技术,减少重复代码。

基本语法:class 子类 :继承方式   父类

子类也称为派生类,父类也称为基类。

派生类中的成员包含两大部分:

        一类是从基类继承过来的,一类是自己增加的成员

#include<iostream>
#include<string>
using namespace std;
class basepage//公共页面类
{
public:
	void header()
	{
		cout << " 主页面 " << endl;
	}
};
class JAVA:public basepage//继承公共页面
{
public:
	void content()
	{
		cout << "java教学" << endl;
	}
};
void test01()
{
	JAVA ja;
	ja.content();
	ja.header();
}
int main()
{
	test01();
	system("pause");
	return 0;
}

继承方式

基本语法:class 子类 :继承方式   父类

公共继承

保护继承

私有继承

 protected和private都只有类内可以访问,但是区别在于,protected可以继承,private不能继承。

总结一下继承的级别:private>protected>public

继承中的对象模型

父类中所有静态成员属性都会被子类继承

父类中私有成员属性,是被编译器隐藏了,因此访问不到,但确实是被继承下去了。

这里学习一下使用开发人员命令提示符

继承中的构造和析构顺序

子类继承父类后,当创建子类对象,也会调用父类的构造函数。

先构造父类,再构造子类

析构顺序一般与构造顺序相反

继承同名成员处理方式

当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?

        访问子类同名成员  直接访问即可

        访问父类同名成员  需要加作用域

 如果通过子类对象,访问到父类中的同名成员需要加作用域

#include<iostream>
#include<string>
using namespace std;
class base 
{
public:
	base()
	{
		m_a = 100;
	}
	int m_a;
};
class son :public base
{
public:
	son()
	{
		m_a = 200;
	}
	int m_a ;
};
int main()
{
	son s;
	cout<<s.m_a<<endl;//200
	cout << s.base::m_a << endl;//100
	system("pause");
	return 0;
}

 如果通过子类对象,访问到父类中的同名函数需要加作用域

#include<iostream>
#include<string>
using namespace std;
class base 
{
public:
	void func()
	{
		cout << "调用base里的func函数" << endl;
	}
};
class son :public base
{
public:
	void func()
	{
		cout << "调用son里的func函数" << endl;
	}
};
int main()
{
	son s;
	s.func();
	s.base::func();
	system("pause");
	return 0;
}

如果子类中出现和父类同名的函数,编译器会隐藏掉父类中所有同名成员函数

如果想访问到父类中被隐藏的同名成员函数,要加作用域

同名静态成员处理

静态成员和非静态成员出现同名,处理方式一致

不过有两种访问的方式(通过对象和通过类名)

#include<iostream>
#include<string>
using namespace std;
class base 
{
public:
	static int m_a;
};
int base::m_a = 100;//静态成员变量,类内声明,类外初始化
class son :public base
{
public:
	static int m_a;
};
int son::m_a = 200;

int main()
{
	//通过对象访问
	son s;
	cout << s.m_a << endl;//200
	cout << s.base::m_a << endl;//100

	//通过类名直接访问
	cout << base::m_a << endl;
	cout << son::m_a << endl;

	cout << son::base::m_a << endl;
	//第一个::代表要通过类名的方式来访问数据
	//第二个::代表要访问父类作用域下的m_a
	system("pause");
	return 0;
}

静态函数访问方式跟上面类似,不赘述。

多继承语法

 

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

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

相关文章

【HTML 标签详解】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

MySQL(三)-数据类型

MYSQL数据类型 1 整数类型2 浮点数类型和定点数类型3 日期与时间类型4 文本字符串类型5 二进制字符串类型6 数据类型的选择 表是由多列字段组成&#xff0c;每一个字段会有不同的数据类型&#xff0c;不同的数据类型决定了字段包含的数据内容。不同的数据类型也决定了mysql在使…

SpringBoot项目结构及依赖技术栈

目录 1、pom.xml文件配置说明 2、SpringBoot项目结构说明 3、入门案例关键配置说明 &#x1f308; 前面我们学习了SpringBoot快速入门案例&#xff0c;本节我们通过POM文件和项目结构分析两部分内容了解下关于SpringBoot的一些配置说明&#xff0c;以便全面了解SpringBoot项…

Javaweb | 转发、重定向

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 转发 转发与页面跳转 转发 转发的作用在服务器端&#xff0c;将请求发送给服务器上的其他资源&#xff0c;以共同完成一次请求的处理 页面跳转 使用forward跳转时&am…

MySQL(七)-日期和时间函数的使用解析

日期和时间函数的使用解析 1 获取当前日期的函数和获取当前时间的函数2 获取当前日期和时间的函数3 UNIX时间戳函数4 返回UTC日期的函数和返 UTC 时间的函数5 获取月份的函数MONTH(date)和 MONTHNAME(date)6 获取星期的函数DAYNAME(d)DAYOFWEEK(d)和WEEKDAY(d)7 获取星期数的函…

芯片封装基本流程及失效分析处理方法

芯片封装 芯片封装的目的在于对芯片进行保护与支撑作用、形成良好的散热与隔绝层、保证芯片的可靠性&#xff0c;使其在应用过程中高效稳定地发挥功效。 工艺流程 硅片减薄 使用物理手段&#xff0c;如磨削、研磨等&#xff1b;或者化学手段&#xff0c;如电化学腐蚀、湿法腐蚀…

2023-04-24:用go语言重写ffmpeg的muxing.c示例。

2023-04-24&#xff1a;用go语言重写ffmpeg的muxing.c示例。 答案2022-04-24&#xff1a; 本程序的大体过程如下&#xff1a; 打开输出文件并写入头部信息。 添加音频和视频流&#xff0c;并为每个流创建 AVCodecContext 对象&#xff0c;根据输入格式设置编码器参数&#x…

springboot 整合itext 实现pdf下载

一 itext介绍 1.1 核心组件介绍 Text中用文本块(Chunk)、短语(Phrase)和段落(paragraph)处理文本。 1.文本块(Chunk)是处理文本的最小单位&#xff0c;有一串带格式&#xff08;包括字体、颜色、大小&#xff09;的字符串组成。如以下代码就是产生一个字体为HELVETICA、大小为…

【OAI】UERANSIM容器与OAI核心网分立部署及测试

说明启动核心网&#xff1a;启动基站&#xff1a;功能测试ueransim测试1&#xff1a;通过12.1.1.x ping192.168.70.1ueransim测试2&#xff1a; 通过nr-binder绑定自定义TCP程序传数据到核心网ueransim测试3&#xff1a;多ueransim启动 结论附录基站配置文件&#xff1a;TCP通信…

HCIA-RS实验-路由配置-静态路由缺省路由

在计算机网络中&#xff0c;路由器是实现数据包转发的重要设备。它通过查找路由表中的路由信息&#xff0c;将数据包从源地址转发到目标地址。而静态路由和缺省路由则是路由表中的两种重要信息&#xff0c;下面我们来详细了解一下它们的概念、特点和应用。 目录 简述 一、静态…

Let‘s Learn .NET|通过 Semantic Kernel .NET SDK 管理你的 OpenAI 项目

编辑&#xff1a;Alan Wang 排版&#xff1a;Rani Sun Lets Learn .NET 系列 “Lets Learn .NET” 是面向全球的 .NET 初学者学习系列&#xff0c;旨在通过不同语言&#xff0c;帮助不同地区的开发者掌握最新的 .NET 开发知识与技能。 在 ChatGPT 与 OpenAI 火热的当下&#x…

雪花算法

雪花算法(SnowFlake)&#xff0c;是Twitter开源 的分布式ID生成算法 主要是由 64bit 的 long 型生成的全局 ID&#xff0c; 其中分为四个部分&#xff1a; ① 最高1位固定值 0&#xff0c;因为生成的 id 是正整数 ② 后面的41位存储毫秒级时间戳 ③ 第三部分的10位存储机器码…

tp6.1 bingher/ueditor(百度编辑器)(七牛、阿里OSS第三方云)详情图文教程(第二版)

之前做过一版&#xff1a;tp6 bingher/ueditor(百度编辑器)(七牛、阿里OSS第三方云)详情图文教程_我是高手高手高高手的博客-CSDN博客 登录权限是Session&#xff0c;现在系统是Cookie加jwt的Token方式验证 一、修改验证登录权限 修改文件&#xff1a; vendor\bingher\uedito…

R语言 | 向量对象运算

目录 一、数值型的向量对象 1.1 建立规则型的数值向量对象使用序列符号 1.2 简单向量对象的运算 1.3 建立向量对象&#xff1a;seq()函数 1.4 连接向量对象&#xff1a;c()函数 1.5 重复向量对象&#xff1a;rep()函数 1.6 numeric()函数 1.7 程序语句短语跨行的处理 …

阶段式软件研发项目管理工具

下面这个场景是是阶段式软件研发场景&#xff0c;适用于采用瀑布模式开展软件研发的企业或者团队。 创建项目 新建项目时&#xff0c;使用“阶段式软件开发项目”项目模板创建项目。 系统会自动创建10个阶段看板&#xff08;一个阶段一个看板&#xff09;&#xff0c;1个缺陷…

libgo 流程分析(1)

libgo 基础模块 libgo逻辑结构 libgo主要的功能模块主要包括&#xff1a;调度器( Scheduler )、处理器( Processer )、协程( Task )和一个FastSteadyClock。 其中 Scheduler -> Processer -> Task 三层逻辑结构实现了对协程( Task )的生命周期管理和调度和运行。 sch…

【好书分享】数字信号处理入门宝典(Digital Signal Processing-A Student Guide)

简介 该书作为初学者的入门书籍&#xff0c;葵花宝典级的存在&#xff0c;发行量很少&#xff0c;在市面上很难见到&#xff0c;仅此一本&#xff0c;想要的私信&#xff01; Digital signal processing (DSP) systems have developed at a rapid pace over the past two dec…

基于DSP+FPGA+ADS1282支持31Bit高精度数据采集方案(二)模拟电路设计

如图 4.1 所示是系统硬件系统的信号框图&#xff0c;数字信号处理板上的主要核心是 两个处理芯片&#xff0c;即 FPGA 和 DSP &#xff0c;其中 FPGA 主要作用是做 DSP 和外围接口的 桥梁及数据预处理&#xff0c; DSP 做为数据解算核心。 FPGA 通过各种的数据总…

AJAX和JSON

1、什么是AJAX? AJAX&#xff08;ASynchronous JavaScript And XML&#xff09;异步的JavaScript 和 XML&#xff1b; 由Jesse James Garrett 在他的文章AJAX&#xff1a;A New Approoch to Web Applications中首次提出。 ajax&#xff08;Web数据交互方式&#xff09;_百…

[深度学习][CenterFusion]关于centerfusion训练注意的要点

我参考博客CenterFusion 项目超详细环境搭建步骤及可视化操作_centernet可视化_上班摸不了鱼的博客-CSDN博客本文引用 CenterFusion: Center-based Radar and Camera Fusion for 3D Object Detection&#xff0c;复现此论文中的代码&#xff0c;互相学习。注意&#xff1a;由于…