C++ 学生类设计:姓名存储在堆中,支持构造、拷贝和析构
#include
class Student{ private: char *pname; int score; public: //默认构造函数 Student(){ pname = new char[5]; strcpy(pname, "None"); score = 0; cout << "construct None" << endl; } //带参数构造函数 Student(char *name, int s){ pname = new char[strlen(name)+1]; strcpy(pname, name); score = s; cout << "construct '" << pname << "'" << endl; } //拷贝构造函数 Student(const Student &s){ pname = new char[strlen(s.pname)+1]; strcpy(pname, s.pname); score = s.score; cout << "copy '" << pname << "'" << endl; } //析构函数 ~Student(){ cout << "destruct '" << pname << "'" << endl; delete[] pname; } //输出信息 void Disp(){ cout << pname << " " << score << endl; } };
int main() { char name[20]; int score; cin >> name >> score; Student s1, s2(name, score), s3(s2); s1.Disp(); s2.Disp(); s3.Disp(); Student s4 = s3; s4.Disp(); return 0; }
原文地址: https://www.cveoy.top/t/topic/m7t2 著作权归作者所有。请勿转载和采集!