C++面向对象——第四次作业
类的三种继承方式的访问 |
#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()
{
}
派生类中:基类的公有成员和保护成员以保护成员的身份出现在派生类中,基类的私有成员不可直接访问。
无法访问基类私有成员
派生类外:无法通过对象访问基类的成员,无论公有、私有、保护。因为公有成员、保护成员都改变成了保护成员。
无法访问基类公有成员
无法访问基类私有成员