修改例5.3的程序,改为公用继承方式。上机调试程序,使之能正确运行并得到正确结果。对这两种继承方式做分析比较,考虑在什么情况下二者不能互相替换。
#include <iostream>
using namespace std;
class Student
{
public:
void get_value();
void display();
protected:
int num;
string name;
char sex;
};
void Student :: get_value()
{
cin >> num >> name >> sex;
}
void Student :: display()
{
cout << "num:" << num << endl;
cout << "name:" << name << endl;
cout << "sex:" << sex << endl;
}
class Student1:public Student
{
public:
void display_1();
void get_value1();
private:
int age;
string addr;
};
void Student1 :: display_1()
{
cout << "num:" << num << endl;
cout << "name:" << name << endl;
cout << "sex:" << sex << endl;
cout << "age:" << age << endl;
cout << "address:" << addr << endl;
}
void Student1 :: get_value1()
{
cin >> num >> name >> sex >> age >> addr;
}
int main()
{
Student1 stu;
stu.get_value1();
stu.display_1();
system("pause");
return 0;
}
|
在上述的代码中,其实是没有什么区别,因为如果采用public继承方式,则父类的访问方式保持不变。而portected继承方式,则除了父类的private的访问方式仍然为不可访问,而其它的(public,protected) 都为protectd。因此当为了保护父类的成员还是采用protectd方式比较好。