// ============================================================================ // p1c04_03_04 — 4.3.6 深拷贝和浅拷贝 // 来源:川大 C++/LinuxC wiki「02.Qt方向」 // 说明:本文件由 gen_part1.py 合并页面中的教学片段而成。每个片段用 // // --- 原文片段 [pageId:blockIdx] --- 标注出处。 // 已做最小修正(笔误/平台移植),详见 docs/ERRATA.md。 // ============================================================================ #include using namespace std; #include // --- 原文片段 [58954451:3] 4.3.6 深拷贝和浅拷贝 --- class Person{ public: Person(char* name,int age){ pName = (char*)malloc(strlen(name) + 1); strcpy(pName,name); mAge = age; } //增加拷贝构造函数 Person(const Person& person){ pName = (char*)malloc(strlen(person.pName) + 1); strcpy(pName, person.pName); mAge = person.mAge; } ~Person(){ if (pName != NULL){ free(pName); } } private: char* pName; int mAge; }; void test(){ Person p1("Edward",30); //用对象p1初始化对象p2,调用c++提供的默认拷贝构造函数 Person p2 = p1; } // --- main --- int main() { test(); return 0; }