零基础学C++进阶篇四

本文介绍了C++中的继承与派生概念,包括类的继承、继承后可访问性、构造函数访问顺序、子类显示调用父类构造函数、重载运算符、多重继承、多态以及抽象类。详细讲解了每部分内容并提供了相关实例。
摘要由CSDN通过智能技术生成

零基础学C++进阶篇四

继承与派生

继承与派生是面向对象程序设计的两个重要特性,继承是从已有的类那里得到已有的特性,已有的类为基类或父类,新类被称为派生类或子类。继承与派生是从不同角度说明类之间的关系,这种关系包含了访问机制、多态和重载等。

继承

继承是面向对象的主要特征之一,它使得一个类可以从现有类中派生,而不必重新定义一个新类。继承的实质就是用已有的数据类型创建新的数据类型,病保留已有数据类型的特点,以旧的类为基础创建新类,新类包含了旧类的数据类型和成员函数,并可以在新类中添加新的数据成员和成员函数。

类的继承

类继承的形式如下:

class 派生类名标识符:[继承方式] 基类名标识符
{
   
	[访问控制修饰符:]
	[成员声明列表]
}

继承的方式3种派生类型,分别为public、protected、private,访问控制修饰符是public、protected、private三种类型,成员声明列表中包含类的成员变量及成员函数,是派生类的新增成员。“:”是一个运算符,表示基类和派生类之间的继承关系。
实例01 继承操作员类新增员工信息

#include <iostream>
using namespace std;
class Employee
{
   
public:
	int m_id;
	char m_name[128];
	char m_depart[128];
	Employee()
	{
   
		memset(m_name,0,128);
		memset(m_depart,0,128);
	}
	void outputName()
	{
   
		cout << "员工姓名" << m_name << std;
	}
};

class Operator : public Employee
{
   
public:
	char m_password[128];
	bool login()
	{
   
		if(strcmp(m_name,"MR") == 0 &&
			strcmp(m_password,"KJ") == 0)
		{
   
			cout << "登录成功!" << endl;
			return true;
		}else
		{
   
			cout << "登录失败" << endl;
			return false;
		}
	}
};
int main(int argc,char *argv[])
{
   
	Operator optr;
	strcpy(optr.m_name,"MR");
	strcpy(optr.m_password,"KJ");
	optr.login();
	optr.outputName();
	return;
}
继承后可访问性

继承方式有public、private、protected三种,其说明如下:

  • 公有型派生
    公有型派生表示对于基类中的public数据成员和成员函数,在派生中仍然是public,对于基类中的private数据成员和成员函数,在派生类中仍然是private。派生类无法访问父类中private成员,可以访问父类public的成员。

  • 私有型派生
    私有型派生表示在基类中public、protected数据成员和成员函数,在派生类中可以访问。基类中的private数据成员,在派生类中不可访问。

  • 保护型派生
    保护型派生表示在基类中的public、protected数据类型和成员函数,在派生类中均protected,protected类型在派生类定义时可以访问,用派生类声明的对象不可以访问。

构造函数访问顺序

实例03 父类和子类的构造函数访问顺序

#include <iostream>
using namespace std;
class Employee
{
   
public:
	int m_id;
	char m_name[128];
	char m_depart[128];
	Employee()
	{
   
		cout << "Employee类构造函数被调用" << endl;
	}
	~Employee()
	{
   
		cout << "Employee类析构函数被调用" << endl;
	}
};

class Operator : public Employee
{
   
public:
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值