C++第五章
2015-05-11 15:43
120 查看
1: #include <iostream> using namespace std; class Student {public: void get_value() {cin>>num>>name>>sex;} void display( ) {cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl;} private : int num; char name[10]; char sex; }; class Student1: public Student {public: void get_value_1() {get_value(); cin>>age>>addr;} void display_1() { cout<<"age: "<<age<<endl; //引用派生类的私有成员,正确。 cout<<"address: "<<addr<<endl;} //引用派生类的私有成员,正确。 private: int age; char addr[30]; }; int main() {Student1 stud1; stud1.get_value_1(); stud1.display(); stud1.display_1(); return 0; } 2: #include <iostream> using namespace std; class Student {public: void get_value() {cin>>num>>name>>sex;} void display( ) {cout<<"num: "<<num<<endl; cout<<"name: "<<name<<endl; cout<<"sex: "<<sex<<endl;} private : int num; char name[10]; char sex; }; class Student1: private Student {public: void get_value_1() {get_value(); cin>>age>>addr;} void display_1() {display(); cout<<"age: "<<age<<endl; //引用派生类的私有成员,正确。 cout<<"address: "<<addr<<endl;} //引用派生类的私有成员,正确。 private: int age; char addr[30]; }; int main() {Student1 stud1; stud1.get_value_1(); stud1.display_1(); return 0; } 3: #include <iostream> using namespace std; class Student //声明基类 {public: //基类公用成员 void get_value(); void display( ); protected : //基类保护成员 int num; char name[10]; 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: protected Student //声明一个保护派生类 {public: void get_value_1(); void display1( ); private: int age; char addr[30]; }; void Student1::get_value_1() {get_value(); cin>>age>>addr; } void Student1::display1( ) {cout<<"num: "<<num<<endl; //引用基类的保护成员 cout<<"name: "<<name<<endl; //引用基类的保护成员 cout<<"sex: "<<sex<<endl; //引用基类的保护成员 cout<<"age: "<<age<<endl; //引用派生类的私有成员 cout<<"address: "<<addr<<endl; //引用派生类的私有成员 } int main( ) {Student1 stud1; //stud1是派生类student1类的对象 stud1.get_value_1(); //调用派生类对象stud1的公用成员函数 stud1.display1( ); //调用派生类对象stud1的公用成员函数 return 0; } 4: 解法一 #include <iostream> using namespace std; class Student//声明基类 {public: //基类公用成员 void get_value(); void display( ); protected : //基类保护成员 int num; char name[10]; 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 get_value_1(); void display1( ); private: int age; char addr[30]; }; void Student1::get_value_1() {get_value(); cin>>age>>addr; } void Student1::display1( ) {cout<<"num: "<<num<<endl; //引用基类的保护成员,合法 cout<<"name: "<<name<<endl; //引用基类的保护成员,合法 cout<<"sex: "<<sex<<endl; //引用基类的保护成员,合法 cout<<"age: "<<age<<endl; //引用派生类的私有成员,合法 cout<<"address: "<<addr<<endl; //引用派生类的私有成员,合法 } int main( ) {Student1 stud1; //stud1是派生类student1类的对象 stud1.get_value_1(); //调用派生类对象stud1的公用成员函数get_value_1 stud1.display1( ); //调用派生类对象stud1的公用成员函数display1 return 0; } 解法二 #include <iostream> using namespace std; class Student //声明基类 {public: //基类公用成员 void get_value(); void display( ); protected : //基类保护成员 int num; char name[10]; 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: protected Student //声明一个公用派生类 {public: void get_value_1(); void display1( ); private: int age; char addr[30]; }; void Student1::get_value_1() {cin>>age>>addr;} void Student1::display1( ) {cout<<"age:"<<age<<endl; cout<<"address:"<<addr<<endl; } int main( ) {Student1 stud1; //stud1是派生类student1类的对象 stud1.get_value(); stud1.get_value_1(); stud1.display( ); stud1.display1(); //合法。display1是派生类中的公用成员函数 return 0; } 5: class A //A为基类 {public: void f1( ); int i; protected: void f2(); int j; private: int k; }; class B: public A //B为A的公用派生类 {public: void f3( ); protected: int m; private: int n; }; class C: public B //C为B的公用派生类 {public: void f4(); private: int p; }; int main() {A a1; //a1是基类A的对象 B b1; //b1是派生类B的对象 C//c1是派生类C的对象 return 0; } 6: #include <iostream> using namespace std; class A {public: void f1( ); protected: void f2(); private: int i; }; class B: public A {public: void f3( ); int k; private: int m; }; class C: protected B {public: void f4(); protected: int n; private: int p; }; class D: private C {public: void f5(); protected: int q; private: int r; }; int main() {A a1; B b1; C c1; D d1; return 0; } 7: #include <iostream> using namespace std; class A { public: A(){a=0;b=0;} A(int i){a=i;b=0;} A(int i,int j){a=i;b=j;} void display(){cout<<"a="<<a<<" b="<<b;} private: int a; int b; }; class B : public A { public: B(){c=0;} B(int i):A(i){c=0;} B(int i,int j):A(i,j){c=0;} B(int i,int j,int k):A(i,j){c=k;} void display1() {display(); cout<<" c="<<c<<endl; } private: int c; }; int main() { B b1; B b2(1); B b3(1,3); B b4(1,3,5); b1.display1(); b2.display1(); b3.display1(); b4.display1(); return 0; } 8: #include <iostream> using namespace std; class A { public: A(){cout<<"constructing A "<<endl;} ~A(){cout<<"destructing A "<<endl;} }; class B : public A { public: B(){cout<<"constructing B "<<endl;} ~B(){cout<<"destructing B "<<endl;} }; class C : public B { public: C(){cout<<"constructing C "<<endl;} ~C(){cout<<"destructing C "<<endl;} }; int main() { C c1; return 0; } 9: #include<string> #include <iostream> using namespace std; class Teacher {public: Teacher(string nam,int a,char s,string tit,string ad,string t); void display(); protected: string name; int age; char sex; string title; string addr; string tel; }; Teacher::Teacher(string nam,int a,char s,string tit,string ad,string t): name(nam),age(a),sex(s),title(tit),addr(ad),tel(t){ } void Teacher::display() {cout<<"name:"<<name<<endl; cout<<"age"<<age<<endl; cout<<"sex:"<<sex<<endl; cout<<"title:"<<title<<endl; cout<<"address:"<<addr<<endl; cout<<"tel:"<<tel<<endl; } class Cadre {public: Cadre(string nam,int a,char s,string p,string ad,string t); void display(); protected: string name; int age; char sex; string post; string addr; string tel; }; Cadre::Cadre(string nam,int a,char s,string p,string ad,string t): name(nam),age(a),sex(s),post(p),addr(ad),tel(t){} void Cadre::display() {cout<<"name:"<<name<<endl; cout<<"age:"<<age<<endl; cout<<"sex:"<<sex<<endl; cout<<"post:"<<post<<endl; cout<<"address:"<<addr<<endl; cout<<"tel:"<<tel<<endl; } class Teacher_Cadre:public Teacher,public Cadre {public: Teacher_Cadre(string nam,int a,char s,string tit,string p,string ad,string t,float w); void show( ); private: float wage; }; Teacher_Cadre::Teacher_Cadre(string nam,int a,char s,string t,string p,string ad,string tel,float w): Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w) {} void Teacher_Cadre::show( ) {Teacher::display(); cout<<"post:"<<Cadre::post<<endl; cout<<"wages:"<<wage<<endl; } int main( ) {Teacher_Cadre te_ca("Wang-li",50,'f',"prof.","president","135 Beijing Road,Shanghai","(021)61234567",1534.5); te_ca.show( ); return 0; } 10: #include <iostream> #include <cstring> using namespace std; class Teacher //教师类 {public: Teacher(int,char [],char); //声明构造函数 void display(); //声明输出函数 private: int num; char name[20]; char sex; }; Teacher::Teacher(int n,char nam[],char s) //定义构造函数 {num=n; strcpy(name,nam); sex=s; } void Teacher::display() //定义输出函数 {cout<<"num:"<<num<<endl; cout<<"name:"<<name<<endl; cout<<"sex:"<<sex<<endl; } class BirthDate //生日类 {public: BirthDate(int,int,int); //声明构造函数 void display(); //声明输出函数 void change(int,int,int); //声明修改函数 private: int year; int month; int day; }; BirthDate::BirthDate(int y,int m,int d) //定义构造函数 {year=y; month=m; day=d; } void BirthDate::display() //定义输出函数 {cout<<"birthday:"<<month<<"/"<<day<<"/"<<year<<endl;} void BirthDate::change(int y,int m,int d) //定义修改函数 {year=y; month=m; day=d; } class Professor:public Teacher //教授类 {public: Professor(int,char [],char,int,int,int,float); //声明构造函数 void display(); //声明输出函数 void change(int,int,int); //声明修改函数 private: float area; BirthDate birthday; //定义BirthDate类的对象作为数据成员 }; Professor::Professor(int n,char nam[20],char s,int y,int m,int d,float a): Teacher(n,nam,s),birthday(y,m,d),area(a){ } //定义构造函数 void Professor::display() //定义输出函数 {Teacher::display(); birthday.display(); cout<<"area:"<<area<<endl; } void Professor::change(int y,int m,int d) //定义修改函数 {birthday.change(y,m,d); } int main() {Professor prof1(3012,"Zhang",'f',1949,10,1,125.4); //定义Professor对象prof1 cout<<endl<<"original data:"<<endl; prof1.display(); //调用prof1对象的display函数 cout<<endl<<"new data:"<<endl; prof1.change(1950,6,1); //调用prof1对象的change函数 prof1.display(); //调用prof1对象的display函数 return 0; }
相关文章推荐
- C++第五章剩下作业题目(第八周)
- Head First设计模式C++实现--第五章:单件(Singleton)模式
- C++ Primer Plus 课后编程练习——第五章循环和关系表达式
- C++对象模型——构造,解构,拷贝语意学(第五章)
- Modern C++ Design 笔记 第五章 Generalized Functors
- 算法竞赛入门经典笔记 第五章c++与STL入门
- C++primer plus(第四版)第五章习题参考
- 2012/1/13 《C++ Primer Plus》第五章:循环和表达式 学习笔记
- C++对象模型——"无继承"情况下的对象构造(第五章)
- 编程珠玑第五章习题五——C++实现二分搜索时进行错误检测
- C++ Primer Plus (第6版)编程练习 代码-----第五章
- 第五章:C++程序的结构
- C++ Primer Plus 学习笔记 第五章 01 for循环 递增运算符和递减运算符 复合语句,逗号运算符 C风格字符串比较、string类字符串比较
- 2012/1/13 《C++ Primer Plus》第五章:循环和表达式 学习笔记
- 第五章 C++函数学习要求和实验
- Effective C++第五章-实现
- 《Programming in C++》第五章
- C++第五章
- C++ primier(第五版)第五章读书笔记
- C++ Primer Plus 第六版(中文版)课后编程题----第五章