C++实验20

来源:互联网 发布:淘宝店铺音乐怎么添加 编辑:程序博客网 时间:2024/06/05 13:19

一、从坐标到圆柱虚函数

#include<iostream>using namespace std;class points{    float x;    float y;public:    points(float a=0, float b=0)    {        x=a;        y=b;    }    virtual void show()    {        cout<<"points:"<<endl;        cout<<"x="<<x<<'\t'<<"y="<<y<<endl<<endl;    }    void center()    {        cout<<"("<<x<<","<<y<<")"<<endl;    }    ~points(){}};class circle:public points{    float r;public:    circle(float a=0, float b=0, float c=0):points(a,b)    {        r=c;    }    void show()    {        cout<<"circle:\n";        cout<<"center:";        center();        cout<<"r="<<r<<endl;        cout<<endl;    }    void show_circle()    {        cout<<"center:";        center();        cout<<"r="<<r<<endl;    }    float area()    {        return 3.14*r*r;    }};class cylinder:public circle{    float hight;public:    cylinder(float a=0,float b=0,float c=0,float d=0):circle(a,b,c)    {        hight=d;    }    void show()    {        cout<<"cylinder\n";        show_circle();        cout<<"hight="<<hight<<endl;    }    float volume()    {        return area()*hight;    }};void main(){    points a(2,3);    circle b(4,5,1);    cylinder c(6,8,2,1);    points *d;    d=&a;    d->show();    d=&b;    d->show();    d=&c;    d->show();}

二、从坐标到圆柱虚基类

#include<iostream>using namespace std;class shape{public:    virtual void show()=0;};class points:public shape{    float x;    float y;public:    points(float a=0, float b=0)    {        x=a;        y=b;    }    void show()    {        cout<<"points:"<<endl;        center();        cout<<endl;    }    void center()    {        cout<<"("<<x<<","<<y<<")"<<endl;    }    ~points(){}};class circle:public points{    float r;public:    circle(float a=0, float b=0, float c=0):points(a,b)    {        r=c;    }    void show()    {        cout<<"circle:\n";        cout<<"center:";        center();        cout<<"r="<<r<<endl;        cout<<endl;    }    void show_circle()    {        cout<<"center:";        center();        cout<<"r="<<r<<endl;    }    float area()    {        return 3.14*r*r;    }};class cylinder:public circle{    float hight;public:    cylinder(float a=0,float b=0,float c=0,float d=0):circle(a,b,c)    {        hight=d;    }    void show()    {        cout<<"cylinder\n";        show_circle();        cout<<"hight="<<hight<<endl;    }    float volume()    {        return area()*hight;    }};void main(){    shape *p;    points a(2,3);    circle b(4,5,1);    cylinder c(6,8,2,1);    p=&a;    p->show();    p=&b;    p->show();    p=&c;    p->show();}

三、从学生类到扩展虚函数虚基类

#include<iostream>#include<string.h>class student{    int id;    char name[20];    char sex[6];    int age;public:    student(int a,char *b, char *c, int d)    {        id=a;strcpy(name,b);strcpy(sex,c);age=d;        std::cout<<"student constructor\n";    }    ~student(){std::cout<<"student destructor\n";}    void print_student();    virtual void show();    //virtual void show()=0定义为纯虚函数也可,main中未定义student对象};class phd: public student{    int papernum;    float workhour;public:    phd(int a, char *b, char *c, int d,int e, float f):student(a,b,c,d)    {        papernum=e;        workhour=f;        std::cout<<"phd constructor\n";    }    ~phd(){std::cout<<"phd destructor\n";}    void print_phd();    void show();};class master: public student{    float grade;    int flag;public:    master(int a, char *b, char *c, int d, float e, int f):student(a,b,c,d)    {        grade=e;        flag=f;        std::cout<<"master constructor\n";    }    ~master(){std::cout<<"master destructor\n";}    void print_master();    void show();};class undergraduate: public student{    float gradein;    float gradeout;public:    undergraduate(int a, char *b, char *c, int d, float e, float f):student(a,b,c,d)    {        gradein=e;        gradeout=f;        std::cout<<"undergraduate destructor\n";    }    ~undergraduate(){std::cout<<"undergraduate destructor\n";}    void print_undergraduate();    void show();};void student::print_student(){    std::cout<<"idnumber: "<<id<<"\nname: "<<name<<"\nsex: "<<sex<<"\nage: "<<age<<'\n';}void student::show() {print_student();}void phd::print_phd(){    print_student();    std::cout<<"paper number: "<<papernum<<"\nworking hours: "<<workhour<<'\n';}void phd::show() {print_phd();}void master::print_master(){    print_student();    std::cout<<"grade: "<<grade<<"\nattending? ";    if(flag)        std::cout<<"yes\n";    else        std::cout<<"no\n";}void master::show() {print_master();}void undergraduate::print_undergraduate(){    print_student();    std::cout<<"incourse grade: "<<gradein<<"\noutcourse grade: "<<gradeout<<'\n';}void undergraduate::show() {print_undergraduate();}void main(){    phd a(12345678,"张三","男",25,3,20);    master b(2234567,"李四","女",24,98,0);    undergraduate c(32345678,"赵五","男",23,100,100);    student *p;    p=&a;    p->show();    std::cout<<'\n';    p=&b;    p->show();    std::cout<<'\n';    p=&c;    p->show();}
原创粉丝点击