欢迎来到 L H S 的博客

早餐,人生的一半,今天也要元气满满哦。| 凤兮凤兮归故乡,遨游四海求其凰。凤凰鸣矣,于彼高岗;梧桐生矣,于彼朝阳。| 死亡本是轮回的归宿,因所爱而无畏。| 有一美人兮见之不忘,一日不见兮,思之如狂。邂逅你,是生生世世的宿命。。。。。|

C++面向对象——第四次作业

类的三种继承方式的访问
一、公有继承(public)
#include <iostream>

using namespace std;

class Origin   //基类
{
private:
	float num1;
	float Input1(float num1)
	{
		cout << "please input a numbers:";
		cin >> num1;
		return num1;
	}
public:
	float num2;
	float Input2(float num2)
	{
		cout << "please input a number:";
		cin >> num2;
		return num2;
	}
protected:
	float temp;
	void Output();
		

};

class Change :public Origin   //公有继承
{
private:
	float num2;
public:
	void exchange()
	{
		Input2(num2);   //调用基类Input2
		temp = num1;   //调用基类temp、num
		num1 = num2;
		num2 = temp;
	}
};
void Change::Output()
{
	cout << temp;
}

int main()
{

}

派生类中:基类的公有成员和保护成员在派生类中可直接访问,基类的私有成员不可直接访问。
可以看见调用基类私有成员num1错误

派生类外:可以通过对象访问基类的公有成员,基类的保护成员和私有成员都不能被访问。
可以看见基类保护成员Output()不能被访问

二、私有继承(private)

#include <iostream>

using namespace std;

class Origin   //基类
{
private:
	float num1;
	float Input1(float num1)
	{
		cout << "please input a numbers:";
		cin >> num1;
		return num1;
	}
public:
	float num2;
	float Input2(float num2);
protected:
	float temp;
	void Output();
		

};

class Change :private Origin   //私有继承
{
private:
	float num3;
public:
	void exchange()
	{
		Input2(num2);   //调用基类Input2
		temp = num1;   //调用基类temp、num
		num1 = num2;
		num2 = temp;
	}
};
float Change::Input2(float num2)
{
	cout << "please input a number:";
	cin >> num2;
	return num2;
}
void Change::Output()
{
	cout << temp;
}

int main()
{

}

派生类中:基类的公有成员和保护成员以私有成员的身份出现在派生类中,基类的私有成员不可直接访问。
无法访问基类私有成员

派生类外:无法通过对象访问基类的成员,无论公有、私有、保护。因为公有成员、保护成员都改变成了私有成员。
无法访问基类公有成员
无法访问基类私有成员

三、保护继承(protected)

#include <iostream>

using namespace std;

class Origin   //基类
{
private:
	float num1;
	float Input1(float num1)
	{
		cout << "please input a numbers:";
		cin >> num1;
		return num1;
	}
public:
	float num2;
	float Input2(float num2);
protected:
	float temp;
	void Output();
		

};

class Change :protected Origin   //公有继承
{
private:
	float num3;
public:
	void exchange()
	{
		Input2(num2);   //调用基类Input2
		temp = num1;   //调用基类temp、num
		num1 = num2;
		num2 = temp;
	}
};
float Change::Input2(float num2)
{
	cout << "please input a number:";
	cin >> num2;
	return num2;
}
void Change::Output()
{
	cout << temp;
}

int main()
{

}

派生类中:基类的公有成员和保护成员以保护成员的身份出现在派生类中,基类的私有成员不可直接访问。
无法访问基类私有成员

派生类外:无法通过对象访问基类的成员,无论公有、私有、保护。因为公有成员、保护成员都改变成了保护成员。
无法访问基类公有成员
无法访问基类私有成员

posted @ 2019-10-12 18:08  小囡囡不成仙  阅读(279)  评论(0编辑  收藏  举报