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

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

相关推荐

  1. 继承派生之——继承派生

    2024-02-01 14:48:02       27 阅读
  2. 继承派生(1)

    2024-02-01 14:48:02       27 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-01 14:48:02       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-01 14:48:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-01 14:48:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-01 14:48:02       18 阅读

热门阅读

  1. BeanUtil.copyProperties(source,target)拷贝List注意事项

    2024-02-01 14:48:02       37 阅读
  2. 深度学习的进展

    2024-02-01 14:48:02       29 阅读
  3. 代码随想录算法训练营|day22

    2024-02-01 14:48:02       33 阅读
  4. Android studio布局详解

    2024-02-01 14:48:02       34 阅读
  5. 达梦数据库存储过程

    2024-02-01 14:48:02       26 阅读
  6. vue3:中warch监听的几种写法

    2024-02-01 14:48:02       33 阅读
  7. ModuleNotFoundError: No module named ‘flask._compat‘

    2024-02-01 14:48:02       28 阅读
  8. rsync将远程文件同步到本地

    2024-02-01 14:48:02       30 阅读
  9. Docker加固策略,防止攻击

    2024-02-01 14:48:02       28 阅读