贺老师的教学链接 本课讲解
公用继承
//演示:修改Student中的访问限定符,编译及运行,从而查看结果 //当Student中的3个数据成员改为private时,程序的两种改法: //(1)在Student1中的show1()方法中调用show(); //(2)在main()函数中调用stud1.show() #include <iostream> #include<string> using namespace std; class Student//声明基类Student { public: Student(int n,string nam,char s) //基类构造函数 { num=n; name=nam; sex=s; } void show() { cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl<<endl; } ~Student( ) { } //基类析构函数 protected: //保护部分 int num; string name; char sex ; }; class Student1: public Student //声明派生类Student1 { public: //派生类的公用部分 Student1(int n,string nam,char s,int a,string ad):Student(n,nam,s) //派生类构造函数 { age=a; //在函数体中只对派生类新增的数据成员初始化 addr=ad; } void show1( ) { cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl; cout<<"age: "<<age<<endl; cout<<"address: "<<addr<<endl<<endl; } ~Student1( ) { } //派生类析构函数 private: //派生类的私有部分 int age; string addr; }; int main( ) { Student1 stud1(10010,"Wang-li",'f',19,"115 Beijing Road,Shanghai"); Student1 stud2(10011,"Zhang-fun",'m',21,"213 Shanghai Road,Beijing"); Student stud3(20010,"He-xin",'m'); stud1.show1( ); //输出第一个学生的数据 stud2.show( ); //输出第二个学生的数据 stud3.show( ); //输出第二个学生的数据 return 0; }
//演示:修改Student中的访问限定符,编译及运行,从而查看结果 //当Student中的3个数据成员改为private时,程序的改法: //(1)在Student1中的show1()方法中调用show(); //而不能: //(2)在main()函数中调用stud1.show() #include <iostream> #include<string> using namespace std; class Student//声明基类Student { public: Student(int n,string nam,char s) //基类构造函数 { num=n; name=nam; sex=s; } void show() { cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl<<endl; } ~Student( ) { } //基类析构函数 protected: //保护部分 int num; string name; char sex ; }; class Student1: private Student //声明派生类Student1 { public: //派生类的公用部分 Student1(int n,string nam,char s,int a,string ad):Student(n,nam,s) //派生类构造函数 { age=a; //在函数体中只对派生类新增的数据成员初始化 addr=ad; } void show1( ) { show(); cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl; cout<<"age: "<<age<<endl; cout<<"address: "<<addr<<endl<<endl; } ~Student1( ) { } //派生类析构函数 private: //派生类的私有部分 int age; string addr; }; int main( ) { Student1 stud1(10010,"Wang-li",'f',19,"115 Beijing Road,Shanghai"); Student1 stud2(10011,"Zhang-fun",'m',21,"213 Shanghai Road,Beijing"); Student stud3(20010,"He-xin",'m'); stud1.show1( ); //输出第一个学生的数据 stud2.show( ); //输出第二个学生的数据 stud3.show( ); //输出第二个学生的数据 return 0; }
//演示:修改Student中的访问限定符,编译及运行,从而查看结果 #include <iostream> #include<string> using namespace std; class Student//声明基类Student { public: Student(int n,string nam,char s) //基类构造函数 { num=n; name=nam; sex=s; } void show() { cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl<<endl; } ~Student( ) { } //基类析构函数 protected: //保护部分 int num; string name; char sex ; }; class Student1: protected Student //声明派生类Student1 { public: //派生类的公用部分 Student1(int n,string nam,char s,int a,string ad):Student(n,nam,s) //派生类构造函数 { age=a; //在函数体中只对派生类新增的数据成员初始化 addr=ad; } void show1( ) { cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl; cout<<"age: "<<age<<endl; cout<<"address: "<<addr<<endl<<endl; } ~Student1( ) { } //派生类析构函数 private: //派生类的私有部分 int age; string addr; }; int main( ) { Student1 stud1(10010,"Wang-li",'f',19,"115 Beijing Road,Shanghai"); Student1 stud2(10011,"Zhang-fun",'m',21,"213 Shanghai Road,Beijing"); Student stud3(20010,"He-xin",'m'); stud1.show1( ); //输出第一个学生的数据 stud2.show( ); //输出第二个学生的数据 stud3.show( ); //输出第二个学生的数据 return 0; }