//classic.h #ifndef CLASIC_H #define CLASSIC_H namespace CLASS { class Cd{ private: char performers[50]; char label[20]; int selections; double playtime; public: Cd(char* s1, char *s2,int n,double x); Cd(const Cd &d); Cd(); virtual ~Cd(); virtual void report()const; Cd & operator =(const Cd &d); //Is it necessary to set it as a virtual function, can you? }; class Classic: public Cd { private: char work[50]; public: Classic(char *s0,char *s1,char *s2,int n,double x); Classic(); virtual ~Classic(); virtual void report ()const; Classic & operator =(const Classic & c); }; } #endif //classic.cpp #include"classic.h" #include<string> #include<iostream> namespace CLASS{ using std::endl; using std::cout; Cd::Cd(char *s1,char* s2,int n ,double x) { strcpy(performers,s1); strcpy(label,s2); selections=n; playtime = x; } Cd::Cd(const Cd& d) { strcpy(performers,d.performers); strcpy(label,d.label); selections=d.selections; playtime=d.playtime; } Cd :: Cd () { performers[0]='\0'; label[0]='\0'; selections = 0; playtime =0; } Cd :: ~ Cd () { } void Cd:: report() const { cout<<"perfomers: "<<performers<<endl; cout<<"label: "<<label<<endl; cout<<"selections: "<<selections<<endl; cout<<"playtimes: "<<playtime<<endl; } Cd & Cd::operator=(const Cd &d) { strcpy(performers,d.performers); strcpy(label,d.label); selections=d.selections; playtime=d.playtime; return *this; } Classic:: Classic(char *s0,char *s1,char *s2,int n,double x):Cd(s1,s2,n,x) { strcpy(work,s0); } Classic::Classic():Cd() { work[0]='\0'; } Classic:: ~Classic() { } void Classic:: report ()const{ cout<<"work: "<< work<<endl; Cd::report(); } Classic & Classic:: operator =(const Classic & c) { Cd::operator=(c); strcpy(work,c.work); return *this; } } //main.cpp #include<iostream> using namespace std; #include"classic.h" using CLASS::Cd; using CLASS::Classic; void Bravo (const Cd & disk); intmain() { Cd c1("Beatles","capitol",14,35.5); Classic c2=Classic("piano somatia","alfred","phileps",2,58.17); Cd* pcd=&c1; cout<<"using object directly:\n"; c1.report(); c2.report(); cout<<"using type cd* pointer to object:\n"; pcd->report(); pcd=&c2; pcd->report(); cout<<"calling a function with a cd reference argument:\n"; Bravo (c1); Bravo (c2); cout<<"testing assignment : "; Classic copy; copy =c2; copy.report(); system("pause"); return 0; } void Bravo(const Cd & disk) { disk.report(); }
13.1
Guess you like
Origin http://43.154.161.224:23101/article/api/json?id=324394680&siteId=291194637
Recommended
Ranking