对象的赋值与复制及拷贝构造函数
8、小作业:
实现 CStudent 类的拷贝构造函数,让 第 7 点的代码不崩溃!要慎重 new 和 delete 哦!
#include <iostream> #include <string> using namespace std; class Student { public: char* name; char sex; unsigned int age; unsigned int num; Student(char* t_name,char t_sex, unsigned int t_age,unsigned int t_num):sex(t_sex),age(t_age),num(t_num) { name = NULL; int t = strlen(t_name); name = new char[t + 1]; memset(name, 0, t + 1); strcpy(name, t_name); }; Student(Student& stu) { int name_len = 0; if (stu.name) name_len = strlen(stu.name); this->name = NULL; if (name_len > 0) { this->name = new char[name_len + 1]; memset(this->name, 0, name_len + 1); strcpy(this->name, stu.name); } this->age = stu.age; this->num = stu.num; this->sex = stu.sex; } ~Student() { delete[] name; } }; void test() { Student stud("aaa",'m',15,1 ); Student stud_1(stud); } int main() { test(); return 0; }
浙公网安备 33010602011771号