Teacher Student Graduate #include
class Person {public:
Person(char *nam,char s,int a) {strcpy(name,nam);sex=s;age=a;}
protected: char name[20]; char sex; int age; };
class Teacher:virtual public Person {public:
Teacher(char *nam,char s,int a,char *t):Person(nam,s,a) {strcpy(title,t); }
protected: char title[10]; };
class Student:virtual public Person {public:
Student(char *nam,char s,int a,float sco): Person(nam,s,a),score(sco){} protected: float score; };
class Graduate:public Teacher,public Student
【第 26 页 共 48 页】
{public:
Graduate(char *nam,char s,int a,char *t,float sco,float w): Person(nam,s,a),Teacher(nam,s,a,t),Student(nam,s,a,sco),wage(w){} void show( ) {cout<<\ cout<<\ cout<<\
cout<<\ cout<<\ cout<<\ } private:
float wage; };
int main( )
{Graduate grad1(\ grad1.show( ); return 0; }
10. 写一个程序,定义抽象类型Shape,由他派生三个类:Circle(圆形),Rectangle(矩形),Trapezoid(梯形),用一个函数printArea分别输出三者的面积,3个图形的数据在定义对象是给定。 #include
class Shape {public:
virtual double area() const =0; //纯虚函数 };
class Circle:public Shape {public:
Circle(double r):radius(r){} virtual double area() const {return 3.14159*radius*radius;}; protected:
double radius; };
class Rectangle:public Shape {public:
Rectangle(double w,double h):width(w),height(h){} virtual double area() const {return width*height;}
【第 27 页 共 48 页】
protected:
double width,height; };
class Trapezoid:public Shape {public:
Trapezoid(double w,double h,double len):width(w),height(h),length(len){} virtual double area() const {return 0.5*height*(width+length);} protected:
double width,height,length; };
void printArea(const Shape &s)
{cout< int main() { Circle circle(12.6); cout<<\ printArea(circle); Rectangle rectangle(4.5,8.4); cout<<\ printArea(rectangle); Trapezoid trapezoid(4.5,8.4,8.0); cout<<\ printArea(trapezoid); return 0; } 11.声明一个Shape抽象类,在此基础上派生出Rectangle和Circle类,二者都有GetArea( )函数计算对象的面积,GetPerim( )函数计算对象的周长。 #include virtual float GetPerim()=0; virtual float GetArea()=0; }; class Rectangle:public Shape {public: Rectangle(float i,float j):L(i),W(j){} ~Rectangle(){} float GetPerim(){return 2*(L+W);} float GetArea(){return L*W;} 【第 28 页 共 48 页】 private: float L,W; }; class Circle:public Shape {public: Circle(float r):R(r){} float GetPerim(){return 3.14*2*R;} float GetArea(){return 3.14*R*R;} private: float R; }; void main() {Shape * sp; sp=new Circle(10); cout< cout< 12.分别用成员函数和友元函数重载运算符,使对实型的运算符“-”适用于复数运算。 #include double real; double imag; public: complex(double r=0.0,double i=0.0){ real=r; imag=i ;} friend complex operator - (complex c1,complex c2); void display(); }; complex operator - (complex c1,complex c2) {return complex( c1.real-c2.real,c1.imag-c2.imag );} void complex::display() { cout<<\} void main() {complex c1(5,4),c2(2,10),c3,; cout<<\ c1.display(); 【第 29 页 共 48 页】 cout<<\ c2.display(); c3=c1-c2; cout<<\ c3.display(); } 13.分别用成员函数和友元函数重载运算符,使对实型的运算符“+” #include double real; double imag; public: complex(double r=0.0,double i=0.0){ real=r; imag=i ;} friend complex operator + (complex c1,complex c2); void display(); }; complex operator + (complex c1,complex c2) {return complex(c1.real+c2.real,c1.imag+c2.imag );} void complex::display() { cout<<\} void main() {complex c1(5,4),c2(2,10),c3,; cout<<\ c1.display(); cout<<\ c2.display(); c3=c1+c2; cout<<\ 【第 30 页 共 48 页】 适用于复数运算。