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(char *name, int s) { int len = strlen(name) + 1; pname = new char[len]; 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/m7tZ 著作权归作者所有。请勿转载和采集!