修改例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方式比较好。
阅读(3802) | 评论(0) | 转发(0) |