首页 > 编程 > C++ > 正文

c++——多态、继承、运算符重载综合例子代码

2019-11-09 20:52:22
字体:
来源:转载
供稿:网友
#include <iostream>#include <string.h>using namespace std;class A{PRivate:    char *name;public:    A(char *n);    virtual ~A();};A::~A(){    int m;    if(name != NULL)    {        m = strlen(name)+1;        delete[] name;        name = NULL;        cout<<"A类释放了"<<m<<"字节空间"<<endl;    }}A::A(char *n){    name = new char[strlen(n)+1];    strcpy(name,n);    cout<<"A类申请了"<<strlen(n)+1<<"字节空间"<<endl;}class B:public A{private:    char *address;public:    B(char *n,char *add);    virtual ~B();};B::B(char *n,char *add):A(n){    address = new char[strlen(add)+1];    strcpy(address,add);    cout<<"B类申请了"<<strlen(add)+1<<"字节空间"<<endl;}B::~B(){    int m;    if(address != NULL)    {        m = strlen(address)+1;        delete[] address;        address = NULL;        cout<<"B类释放了"<<m<<"字节空间"<<endl;    }}int main(){    //A a("x12345678");    //  A *pa = new A("x12345678");    // delete pa;    A *pb = new B("xy12345678","吉首大学");    delete pb;    return 0;}

动物类模拟:

#include <iostream>#include <string.h>using namespace std;class CAnimal{private:    int age;    float weight;public:    CAnimal() {};    CAnimal(const CAnimal &ca);    CAnimal& Operator = (const CAnimal &ca);    CAnimal(int a,float w);    void Run();    void Shout();    void Grow();};CAnimal::CAnimal(int a,float w){    age = a;    weight = w;    // cout<<"信息:"<<a<<","<<w<<endl;}CAnimal::CAnimal(const CAnimal &ca){    this->age = ca.age;    this->weight = ca.weight;}void CAnimal::Run(){    cout << " is running!" << endl;}void CAnimal::Shout(){    cout << " is shouting!" << endl;}void CAnimal::Grow(){    cout << " is growing!" << endl;}class Chorse:public CAnimal{private:    char name[16];    char kind[16];public:    Chorse() {};    Chorse(const Chorse &ca):CAnimal(ca)    {        strcpy(name,ca.name);        strcpy(kind,ca.kind);    };    Chorse(char* n,char* k,int a,float w);    void Run()    {        cout << name;        CAnimal::Run();    };    void Shout()    {        cout << name;        CAnimal::Shout();    };    void Grow()    {        cout << name;        CAnimal::Grow();    };};Chorse::Chorse(char* n,char* k,int a,float w):CAnimal(a,w){    strcpy(name,n);    strcpy(kind,k);}class Ccat:public CAnimal{    private:    char name[16];    char kind[16];public:    Ccat() {};    Ccat(char* n,char* k,int a,float w);    Ccat(const Ccat &ca):CAnimal(ca)    {        strcpy(name,ca.name);        strcpy(kind,ca.kind);    };    void Run()    {        cout << name;        CAnimal::Run();    };    void Shout()    {        cout << name;        CAnimal::Shout();    };    void Grow()    {        cout << name;        CAnimal::Grow();    };};Ccat::Ccat(char* n,char* k,int a,float w):CAnimal(a,w){    strcpy(name,n);    strcpy(kind,k);}class Cdog:public CAnimal{   private:    char name[16];    char kind[16];public:    Cdog() {};    Cdog(char* n,char* k,int a,float w);    Cdog(const Cdog &ca):CAnimal(ca)    {        strcpy(name,ca.name);        strcpy(kind,ca.kind);    };    void Run()    {        cout << name;        CAnimal::Run();    };    void Shout()    {        cout << name;        CAnimal::Shout();    };    void Grow()    {        cout << name;        CAnimal::Grow();    };};Cdog::Cdog(char* n,char* k,int a,float w):CAnimal(a,w){    strcpy(name,n);    strcpy(kind,k);}int main(){    Cdog c("DogWangcai","alaska",10,11.5);    c.Run();    c.Grow();    c.Shout();    Ccat * cat = new Ccat("CatJerry","jiamao",10,56.3);    /*        cat->Run();        cat->Grow();        cat->Shout();    */    Ccat * cat2 = cat;    //Ccat cat2(*cat);    cat2->Run();    cat2->Grow();    cat2->Shout();    cat2->CAnimal::Shout();    CAnimal * a = new CAnimal(30,56);    //a->Ccat::Run();    return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选