C++ 学生类设计:内存管理、构造函数、析构函数和拷贝构造
#include
class Student { private: char *pname; //名字在堆中找空间存放,pname存储其起始位置 int score; public: Student() { pname = new char[5]; strcpy(pname, 'None'); score = 0; cout << 'construct None' << endl; } Student(const 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; } void Disp() { cout << pname << ' ' << score << endl; } ~Student() { cout << 'destruct ' << pname << endl; delete[] pname; } };
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/m7tT 著作权归作者所有。请勿转载和采集!