【C++进阶之路】第一篇:C++中的继承

🌟hello,各位读者大大们你们好呀🌟
🍭🍭系列专栏:【C++学习与应用】
✒️✒️本篇内容:继承的基础概念,定义方法,基类和派生类的转换,继承中类的作用域,什么是隐藏,派生类和默认成员函数,继承和友元,继承与静态函数,菱形继承和虚拟继承,菱形继承总结(继承组合的优劣分析)
🚢🚢作者简介:计算机海洋的新进船长一枚,请多多指教( •̀֊•́ ) ̖́-

目录

一、继承的概念及定义

1.继承的概念 

2.继承的定义

(1)定义格式

(2)继承关系和访问限定符

(3)继承基类成员访问方式的变化

二、基类和派生类的转换

三、继承中的作用域

1.作用域和隐藏

2.对应题目补充 

四、派生类的默认成员函数

五、继承和友元

六、继承与静态成员

七、复杂的菱形继承及菱形虚拟继承

1.单继承

2. 多继承

3.菱形继承

4.菱形继承的问题

5.菱形继承的解决方案:虚拟继承

6.虚拟继承解决数据冗余和二义性的原理

八、继承的总结和反思(继承、组合的优劣分析)

九、笔试面试题(继承)


一、继承的概念及定义

1.继承的概念 

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。

代码示例(如下)

#include<iostream>
#include<string>
using namespace std;

class Person
{
public:
	void Print()
	{
		cout << "name:" << _name << endl;
		cout << "age:" << _age << endl;
	}
protected:
	string _name = "peter"; // 姓名
	int _age = 18;  // 年龄
};

// 继承后父类的Person的成员(成员函数+成员变量)都会变成子类的一部分。这里体现出了
// Student和Teacher复用了Person的成员。
class Student : public Person
{
protected:
	int _stuid; // 学号
};

class Teacher : public Person
{
protected:
	int _jobid; // 工号
};

int main()
{
	Student s;
	Teacher t;
	s.Print();
	t.Print();
	return 0;
}

运行结果如下 ,证明了Student和Teacher复用了Person的成员。

2.继承的定义

(1)定义格式

下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类

(2)继承关系和访问限定符

(3)继承基类成员访问方式的变化

类成员 / 继承方式
public继承 protected继承 private继承
基类的public成员 派生类的public成员
派生类的 protected
成员
派生类的 private
成员
基类的 protected
成员
派生类的 protected
成员
派生类的 protected
成员
派生类的 private
成员
基类的 private
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值