C++系列-继承方式

继承方式

  • 继承的语法

  • 继承方式:

  • 继承可以减少重复的代码。

  • 继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。

  • 基类=父类,派生类=子类,派生类是在继承了基类的部分成员基础上,加上自己的成员而产生的类。


继承的语法

cpp 复制代码
class 子类名 : 继承方式 父类名1 , 继承方式 父类名2 , ..... 
{
	派生类的成员
};

继承方式:

  • public
  • protected
  • private

继承方式的特点

  • 无论哪种继承方式,父类中的private成员在子类中均不可以访问。
  • public继承中,父类中public和protected权限到子类中不变。
  • protected继承中,父类中的public和protected权限到子类中变为protected。
  • private继承中,父类中的public和protected权限到子类中变为private。

继承方式的举例

  • public继承
cpp 复制代码
code:
	#include <iostream>
	using namespace std;
	class Father
	{
	public:
		int m_public_a=1;
	protected:
		int m_protected_a=11;
	private:
		int m_private_a=111;
	public:
		void show_info()
		{
			cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;
		}
	};
	
	class Son : public Father
	{
	public:
		void show_info_1()
		{
			m_public_a = 5;
			m_protected_a = 55;
			cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;
			//m_private_a = 555;		// 父类中的私有成员到子类中无法访问
		}
	};
	
	void test01()
	{
		Son s1;
		s1.m_public_a = 3;
		// s1.m_protected_a = 333;		//父类中的protected权限的成员到子类中仍是protected, 在类中可以访问,类外不行
		s1.show_info_1();
	
	}
	void main()
	{	
		test01();
		system("pause");
	}
result:
	m_public_a: 5, m_protected_a: 55
  • protected继承
cpp 复制代码
code:
	#include <iostream>
	using namespace std;
	class Father
	{
	public:
		int m_public_a=1;
	protected:
		int m_protected_a=11;
	private:
		int m_private_a=111;
	public:
		void show_info()
		{
			cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;
		}
	};
	
	class Son: protected Father
	{
	public:
		void show_info_1()
		{
			m_public_a = 5;
			m_protected_a = 55;
			cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;
			//m_private_a = 555;		// 父类中的私有成员到子类中无法访问
		}
	};
	
	void test01()
	{
		Son s1;
		//s1.m_public_a = 3;			// 父类中的public权限的成员到protected继承方式的子类中仍是protected, 在类中可以访问,类外不行
		// s1.m_protected_a = 333;		// 父类中的protected权限的成员到protected继承方式的子类中仍是protected, 在类中可以访问,类外不行
		s1.show_info_1();
	
	}
	void main()
	{	
		test01();
		system("pause");
	}
result:
	m_public_a: 5, m_protected_a: 55

  • private继承
cpp 复制代码
code:
	#include <iostream>
	using namespace std;
	class Father
	{
	public:
		int m_public_a=1;
	protected:
		int m_protected_a=11;
	private:
		int m_private_a=111;
	public:
		void show_info()
		{
			cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;
		}
	};
	
	class Son: private Father
	{
	public:
		void show_info_1()
		{
			m_public_a = 5;
			m_protected_a = 55;
			cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;
			//m_private_a = 555;		// 父类中的私有成员到子类中无法访问
		}
	};
	class Grandson: public Son
	{
	public:
		void show_info_1()
		{
			//m_public_a = 5;			// 在Son类中,因为是以private方式继承,原Father中的public和protected权限的成员都变成了private,所以当Grandson再使用public方式继承时,无法访问。
			//m_protected_a = 55;
			//cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;
		}
	};
	void test01()
	{
		Son s1;
		//s1.m_public_a = 3;			// 父类中的public权限的成员到private继承方式的子类中是private, 在类中可以访问,类外不行
		//s1.m_protected_a = 333;		// 父类中的protected权限的成员到private继承方式的子类中是private, 在类中可以访问,类外不行
		s1.show_info_1();
	
	}
	void main()
	{	
		test01();
		system("pause");
	}
result:
	m_public_a: 5, m_protected_a: 55
相关推荐
小羊没烦恼!3 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
倒头就睡的小比特3 天前
算法竞赛C++常用的STL
c++·算法
weilx12343 天前
C++笔记-文件IO-<fcntl.h>
c++
俊昭喜喜里3 天前
java中的继承和多态的区别
java
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕3 天前
JSONObject与JSONArray封装数据格式区别
java·json
千里马学框架3 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖3 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商