//包含对象成员的派生类的构造函数与析构函数.CPP #include<iostream> using namespace std; class BOOK{ char* bname; float price; public: BOOK(char* bn,float bp){ bname=new char[strlen(bn)+1]; strcpy(bname,bn); price=bp; cout<<"BOOK constructor is called."<<endl; } char* getbookname(){ return bname; } ~BOOK(){ cout<<"BOOK destructor is called."<<endl; delete[] bname; } }; class PERSON{ char *pname; int page; public: PERSON(char* n,int a){ pname=new char[strlen(n)+1]; strcpy(pname,n); page=a; cout<<"PERSON constructor is called."<<endl; } ~PERSON(){ cout<<"PERSON destructor is called."<<endl; delete[] pname; } char* getname(){ return pname; } int& getage(){ return page; } }; class student:public PERSON{ private: BOOK book; float grade; public: student(char *bookname,float bprice,char *pn,int pa,float g):PERSON(pn,pa),book(bookname,bprice){ grade=g; cout<<"student constructor is called.\n"; } ~student(){ cout<<"student destructor is called."<<endl; } void display(void){ cout<<book.getbookname()<<","<<getname()<<","<<getage()<<","<<grade<<endl; } void addage(int x){ getage()+=x; } }; void main(void){ student s1("c++",40,"sunlei",18,75); s1.display(); s1.addage(2); s1.display(); }