c++----繼承方式

RejectiveΘ發表於2020-09-25

c++ ----繼承方式

繼承的語法
子類:繼承方式 父類

程式碼部分

#include<iostream>
using namespace std;

//繼承的三種方式
//公共繼承
//保護繼承
//私有繼承


//注意事項
//子類無論是以那一種方式繼承,都不能訪問父類中的私有許可權的成員
//若子類以public方式繼承,,在不改變父類訪問許可權的情況下繼承
//若子類以protected的方式繼承,那麼所繼承的成員屬性和函式都變為protected許可權
//若一private方式繼承,那麼所繼承的成員都變為private許可權


class Base1
{
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};

//首先是公共繼承
class Son1 :public Base1
{
	void funtion()
	{
		m_A = 100;//父類中公共許可權的成員,子類公共繼承後仍為公共許可權
		m_B= 100;//父類中保護許可權的成員,子類公共繼承後仍為保護許可權
		//m_C = 100;//子類無法訪問父類中私有許可權的內容
	}
};
void test01()
{
	Son1 s1;
	s1.m_A = 1000;
	cout << s1.m_A << endl;
	//s1.m_B = 100;//繼承後父類中的保護許可權內容,在子類中仍為保護許可權,所以無法訪問
}

/*------------------------------分割線-----------------------------------------------------------------*/
class Base2
{
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};

class Son2 :protected Base2
{
	void function()
	{
		m_A = 100;//父類中公共許可權的成員,子類保護繼承後變為:保護許可權
		m_B = 100;//父類中保護許可權的成員,子類保護繼承後,仍為保護許可權
	}
};

void test02()
{
	Son2 s2;
	/*s2.m_A = 1000;
	s2.m_B = 1000;*///由於繼承後變成了保護許可權,所以類外不能訪問成員
}

/*------------------------------分割線-----------------------------------------------------------------*/

class Base3
{
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};

class Son3 :private Base3
{
	void function()
	{
		m_A = 100; //父類中公共許可權的成員,子類私有繼承後變為:私有許可權
		m_B = 100;//父類中保護許可權的成員,子類私有繼承後變為:私有許可權
	}
};

class grandson :public Son3
{
	void fun()
	{
		//由於父類的成員在私有繼承後都變為了私有許可權,所以其子類不能訪問父類的私有成員了
		//m_A = 100;
		//m_B = 100;
	}
};

void test03()
{
	Son3 s3;
	//s3.m_A = 100;//由於已經變成了私有許可權,所以類外不能訪問成員
	//s3.m_B = 100;
}


int main()
{
	test01();
	system("pause");
	return 0;
}

原理圖

在這裡插入圖片描述

相關文章