第五章 类的继承与派生之——类的继承与派生

本文详细介绍了C++中的类继承与派生概念,包括派生类的定义、特点、继承方式、继承关系的特殊性、类之间的访问、静态成员、单重和多重继承,并通过实例解析了继承中的相关问题。
摘要由CSDN通过智能技术生成

1、派生类的概念

(1)通过已有的类来建立新类的过程,叫做“类的派生”,原来的类叫做“基类”,新建立的类则叫做“派生类

(2)派生类中定义了与基类同名的成员或成员函数时,在派生类对象访问这个函数时,访问的是派生类的,这种现象叫“覆盖”,也叫重写,也叫同名隐藏,即隐蔽了基本的同名函数

2、派生类的特点

(1)从类的成员角度看,派生类自动地将基类的所有成员作为自己的成员,这叫做“继承”。

(2)基类派生类又可以分别叫做“父类”和“子类”,有时也称为“一般类”和“特殊类”。

(3)一个或多个以前定义的类 (基类) 产生新类的过程称为派生这个新类称为派生类

(4)派生的新类同时也可以增加或者重新定义数据和操作,这就产生了类的层次性

(5)类的继承是指派生类继承基类的数据成员和成员函数

(6)继承常用来表示类属关系,不能将继承理解为构成关系


3、派生类的定义格

派生类的定义格式如下:

class 派生类名: 继承方式 基类名
{
派生类新定义成员;
}

4、继承方式

继承方式说明符指明如何控制基美成员在派生美中的访问属性,通常由3种方式,分别是public (公有继)、private (私有继)和protected(保护维承)->son类不可继承。

【示例】派生类改变基类成员的访问权限

#include <iostream>
using namespace std;

class BaseClass
{
   
	public:
		int vl, v2;
		BaseClass()
		{
   
			v1 = 1; //公有访问权限
			v2 =1;
		}
		int temp1(){
   }//公有访问权限
};

class DerivedClass :public BaseClass
{
   
	int vl;
	int temp1() {
   }
	public:
		DerivedClass()
		{
   
			v1=10;
		}
		void printv()
		{
   
			cout << "vl=" << vl << endl;
			cout2"Base.vl=" << BaseClass::v1 << endl;
		}
};

int main()
{
   
	BaseClass bc;
	DerivedClass dc;
	dc.printv();
	return 0;
}

【运行结果】

v1=10
Base,v1=1

5、继承关系的特殊性

继承关系的特殊性:派生类不能继承基类的友元函数,但基类的成员函数是其他类的友元函数时,是可以被继承的。

a.如果基类有友元类或友元函数,则其派生类不会因继承关系而也有此友元类或友元函数

b.如果基类是某类的友元,则这种友元关亲是被继承的

【示例】派生类继承了友元函数

#include<iostream>
using namespace std;

class another;
Class Base
{
   
	private:
			float X;
	public:
		void print(const another &K) ;
};

class Derived:public Base
{
   
	private:
		float y;
};

class another
{
   
	private:
		int aaa ;
	public:
		another ()
		{
   		
			aaa=100;
		}
		friend void Base::print(const another &K); //基类的成员函数声明为本类的友元
};

void Base::print(const another &K)
{
   
	cout<<"Base:"<<K.aaa<<end1; //可以访问私有成员变量
}

int main()
{
   
	Base a;
	Derived d;
	another ano;
	a.print
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

润小仙女

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

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

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

打赏作者

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

抵扣说明:

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

余额充值