#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;}
新闻热点
疑难解答
图片精选