2022.5.3 类的继承学习记录

本文详细介绍了C++中三种类继承方式——公有、私有和保护继承的区别,并通过实例展示了如何从基类Document派生出Book类,以及如何从Mammal类派生出Dog类。文章强调了构造函数和析构函数的调用顺序,并提出了编写类时的实用建议,如优先使用公有继承和确保构造函数完整等。
摘要由CSDN通过智能技术生成

三种类继承方式的不同

1.公有继承:

基类派生类
公有成员公有成员
保护成员保护成员
私有成员不可访问

2.私有继承:

基类派生类
公有成员私有成员
保护成员私有成员
私有成员不可访问

3.保护继承:

基类派生类
公有成员保护成员
保护成员保护成员
私有成员不可访问

私有继承和保护继承的不同在于连续继承时私有继承两次后成员不可访问,但保护继承根据连续继承方式不同访问权限不同;

继承小实例:

问题1:

定义一个document类,有数据成员name,派生出book类,增加数据成员pageCount。

代码

#include<bits/stdc++.h>
using namespace std;

class Document{//基类
	public:
		string name;
		Document(){}//默认无参构造函数
		Document(string name)
		{
			this->name=name;
		}//带参构造函数
		
		void Showname(){
			cout<<name<<endl;
		}//输出文件名称
		
		
};

class Book : public Document{//派生类Book 公有继承 Document
	public:
		Book(){}//默认构造函数
		Book(int pageCount,string name) : Document(name) {
			this->pageCount=pageCount;
		}//带参构造函数
		void Showinformation()
		{
			cout<<pageCount<<endl;
			Showname();
		}//输出信息
	private:
		int pageCount;
};

int main()
{
	Book a(1212,"AAA");
	a.Showinformation();
	return 0;
}

问题2

定义一个哺乳动物类Mammal,再由此派生出狗类Dog,定义一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序;
构造函数的调用顺序是先基类后派生类,析构函数的调用顺序是先派生类与基类,与构造函数顺序相反

代码

#include<bits/stdc++.h>
using namespace std;

class Mammal{
	public:
		int age;
		Mammal(int age=0)
		{
			this->age=age;
			cout<<"setMammal"<<endl;
		}
		~Mammal()
		{
			cout<<"delMammal"<<endl;
		}
};

class Dog : public Mammal
{
	public:
		string colour;
		Dog(int age,string colour) : Mammal(age)
		{
			this->colour=colour;
			cout<<"setdog"<<endl;
		}
		~Dog()
		{
			cout<<"deldog"<<endl;
		}
};

int main()
{
	Dog A(6,"red");
}

在这里插入图片描述

反思与总结:

1.初学尽量用公有继承,比较方便
2.每一个类的默认构造函数与带参构造函数都要有,要给全
3.带参构造函数不要给初始值,不然会报错,原因暂时不明,等知道了再来补上。
4.派生类的带参构造函数要调用基类的带参构造函数给基类赋值,写在派生类的参数表里,有多个用逗号间隔,不写在大括号里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草莓猫猫软糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值