一、实验目的: 1.了解面向对象的程序设计的特点、思想,了解类的封装性和信息隐蔽。 2.掌握类和对象的定义和作用,熟练应用类和对象。 3.掌握类的成员函数的定义,熟练定义、应用类的成员函数。 4.掌握对象成员的引用,熟练应用对象成员的引用。 5.掌握构造函数、析构函数,要求熟练应用。 |
||||||||
二、实验内容
程序代码: #include <iostream.h> class base { int n; public: base(int a) { cout<<"constructing base class "<<endl; n=a; cout<<"n="<<n<<endl; } ~base(){ cout<<"destructing base blass"<<endl; } }; class subs:public base { int m; public: subs(int a,int b):base(a) { cout<<"constructing sub class "<<endl; m=b; cout<<"m="<<m<<endl; } ~subs(){ cout<<"destructing sub blass"<<endl; } }; void main() { subs s(1,2); } 程序测试及运行结果:
程序代码: #include <iostream.h> class A { int a; public: A(int i){ a=i; cout<<"constructing class A"<<endl; } void print(){ cout<<a<<endl; } ~A(){ cout<<"destructing class A"<<endl; } }; class B1:public A { int b1; public: B1(int i,int j):A(i) { b1=j; cout<<"constructing class B1"<<endl; } void print() { A::print(); cout<<b1<<endl; } ~B1(){ cout<<"constructing class B1"<<endl; } }; class B2:public A { int b2; public: B2(int i,int j):A(i) { b2=j; cout<<"constructing class B2"<<endl; } void print() { A::print(); cout<<b2<<endl; } ~B2(){ cout<<"constructing class B2"<<endl; }}; class C:public B1,public B2 { int c; public: C(int i,int j,int k,int l,int m):B1(i,j),B2(k,l),c(m) { cout<<"constructing class C"<<endl; } void print() { B1::print(); B2::print(); cout<<c<<endl;} ~C(){ cout<<"destructing class C"<<endl;}}; void main() { C c1(1,2,3,4,5); c1.print();} 程序测试及运行结果:
采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)类。 程序代码: #include<iostream> #include<string> 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:"<<"姓名"<<endl; cout<<"age:"<<"年龄"<<endl; cout<<"sex:"<<"性别"<<endl; cout<<"title:"<<"职称"<<endl; cout<<"address:"<<"地址"<<endl; cout<<"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:virtual public Teacher,virtual 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 wages; }; Teacher_Cadre::Teacher_Cadre(string nam,int a,char s,string tit,string p,string ad,string t,float w):Teacher(nam,a,s,tit,ad,t),Cadre(nam,a,s,p,ad,t),wages(w) //这里构造函数由于是一个人的名字,就可以用同一个nam,a,s {} void Teacher_Cadre::show() { Teacher::display();//引用须指明作用域,否则会出现二义性 cout<<"post:"<<Cadre::post<<endl; cout<<"wages:"<<wages<<endl; } int main() { Teacher_Cadre teacher_cadre1("Wang-li",50,'f',"prof.","president","135 Beijing Road,Shanghai","(021)61234567",1534.5); teacher_cadre1.show(); return 0; } 程序测试及运行结果: |
||||||||
未完待续。。。 |
C语言/C++ 之 继承与派生、多态性与虚函数(4/5)
猜你喜欢
转载自blog.csdn.net/qq_59819866/article/details/131438172
今日推荐
周排行