IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++中的继承------公有、保护和私有 -> 正文阅读

[C++知识库]C++中的继承------公有、保护和私有

C++中有3种基本的继承方式----公有、保护和私有。

继承的好处:减少重复代码。

1、公有继承

我们大学里面都有公共课和专业课,那么我们可以把公共课作为父类,专业课作为子类,来举个例子。我们要打印多位同学的课程,如果每位同学的公共课都差不多,那我们就不用再重复打印每个人的公共课,而是直接继承公共课这个类,拿到他的各种成员(public下)用作自己的,然后在编写一下自己的课程,就ok了,代码如下:

#include<iostream>
using namespace std;

//父类
class baseSubject
{
public:
	string public_Course_1;//公共课1---大学数学
	string public_Course_2;//公共课2---大学英语
	string public_Course_3;//公共课2---中国近代史

	void show_BaseSubject()//显示公共课程的函数
	{
		cout << "我的课程为:" << endl << "  公共课:" << public_Course_1 << "  、" <<
			public_Course_2 << "  、" << public_Course_3 << endl;
	}
};

//子类
class my_Course:public baseSubject//公有继承
{
public:
	//有参构造函数
	my_Course(string course1, string course2, string course3,string major1, string major2)
	{
		public_Course_1 = course1;
		public_Course_2 = course2;
		public_Course_3 = course3;
		this->major_1 = major1;
		this->major_2 = major2;
	}

	void show_MySubjecct()//显示所有课程的函数
	{
		show_BaseSubject();//调用父类的公有显示函数
		cout << "  主修课:" << major_1 << "  、" << major_2 << endl;
	}

private:

	string major_1;//主修1---信号与系统
	string major_2;//主修2---嵌入式系统
};


int main()
{
	//创建对象my,并调用有参构造函数
	my_Course my("大学数学", "大学英语", "中国近代史","信号与系统","嵌入式系统");
	//调用显示所有课程的函数
	my.show_MySubjecct();

	system("pause");

}

输出结果如下:

多+几位同学也是一样的操作,就不重复了。

这里父类也称位基类子类也称作派生类

公有继承不能继承父类的的私有属性,但是可以直接把公有和保护的属性拿过来。

2、保护继承

class my_Course:protected baseSubject//保护继承

保护继承可以把父类的公有和保护下的属性全拿过来作为子类的保护属性,同样,不能继承父类的私有属性。

3、私有继承

class my_Course:private baseSubject//私有继承

私有继承可以把父类公有和保护下的属性全拿过来作为子类的私有属性,同样,不能继承父类的私有属性。

总结

?这是我从其他地方拿过来的网图,解释的比较清楚,可以参考参考。

注意

1、父类中所有非静态成员属性都会被子类继承下去
2、父类中私有成员属性是被编译器给隐藏了,因此是访问不到,但是确实被继承下去了

3、如果子类和父类中成员或者函数同名了,那么编译器默认访问的就是子类,要想访问父类的,就需要加作用域:

静态成员也是一样的,但需要注意,类内声明,内外实现!

s.Base::m_A

4、C++中也支持多继承

类X继承的父类A和B
class X : public A,public B
{

};


?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 13:32:31  更:2022-02-07 13:35:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:01:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码