[{"data":1,"prerenderedAt":4319},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li":3897,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li":4303,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li":4318},{"id":4,"title":5,"body":6,"canonicalPath":3879,"chapterDepth":132,"chapterOrder":3880,"date":3881,"description":125,"docI18nKey":3882,"docKey":3883,"docRoot":3884,"docTitle":3885,"extension":3886,"i18nKey":3887,"isBlogPost":3888,"isWikiDoc":244,"isWikiIndex":3888,"layout":3889,"legacyPath":3889,"locale":3890,"localeSlug":3891,"meta":3892,"navigation":244,"path":3879,"seo":3893,"sourcePath":3894,"sourceStem":3887,"stem":3895,"wikiDepth":132,"__hash__":3896},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理.md","Object initialization and cleanup",{"type":7,"value":8,"toc":3876},"minimark",[9,13,23,28,37,40,43,54,61,66,74,84,99,105,119,345,350,358,362,365,368,371,374,377,380,383,388,863,867,873,877,880,891,904,907,912,932,936,1424,1433,1439,1442,1445,1493,1499,1502,1513,1516,1524,1526,1911,1915,1921,1925,1928,1931,1934,1938,2378,2382,2388,2393,2397,2402,2405,2413,2417,2689,2693,2699,2703,2706,2709,2744,2753,2756,2759,2763,3164,3168,3174,3178,3181,3184,3211,3217,3544,3548,3554,3560,3862,3866,3872],[10,11,5],"h3",{"id":12},"object-initialization-and-cleanup",[14,15,16,20],"ul",{},[17,18,19],"li",{},"In our daily lives, most electronic products we buy come with factory settings, and at some point when we no longer use them, we'll wipe personal data to ensure security.",[17,21,22],{},"Object-oriented programming in C++ originates from real life, and each object also has initial settings as well as cleanup settings before the object is destroyed.",[24,25,27],"h4",{"id":26},"constructor-and-destructor","Constructor and Destructor",[29,30,31,32,36],"p",{},"The ",[33,34,35],"strong",{},"initialization and cleanup"," of objects are also two very important security concerns.",[29,38,39],{},"An object or variable has no initial state, and using it will have unknown consequences.",[29,41,42],{},"That's true - similarly, if an object or variable isn't cleaned up after use, it can also lead to certain security issues.",[29,44,45,46,49,50,53],{},"C++ utilizes ",[33,47,48],{},"constructors"," and ",[33,51,52],{},"destructors"," to solve the aforementioned problem. These two functions are automatically called by the compiler to handle object initialization and cleanup.",[29,55,56,57,60],{},"Object initialization and cleanup are things the compiler forces us to do, so ",[33,58,59],{},"if we don't provide constructors and destructors, the compiler will provide them",".",[29,62,63],{},[33,64,65],{},"The constructors and destructors provided by the compiler are empty implementations.",[14,67,68,71],{},[17,69,70],{},"Constructor: The main purpose is to assign values to an object's member properties when it is created. The constructor is automatically called by the compiler, so there is no need to call it manually.",[17,72,73],{},"Destructor: Primarily responsible for automatically performing cleanup operations before an object is destroyed.",[29,75,76,79,80],{},[33,77,78],{},"Constructor syntax:"," ",[81,82,83],"code",{},"类名(){}",[85,86,87,90,93,96],"ol",{},[17,88,89],{},"Constructors have no return type and don't write void.",[17,91,92],{},"Function name is the same as the class name",[17,94,95],{},"Constructors can have parameters, so overloading is possible.",[17,97,98],{},"When a program calls an object, the constructor is automatically invoked without needing to be called manually, and it will only be called once.",[29,100,101,102],{},"Destructor syntax: ",[81,103,104],{},"~类名(){}",[85,106,107,110,113,116],{},[17,108,109],{},"Destructor, has no return value and also doesn't use void.",[17,111,112],{},"The function name is the same as the class name, with the symbol ~ added before the name.",[17,114,115],{},"Destructors cannot have parameters, so they cannot be overloaded.",[17,117,118],{},"The program will automatically call the destructor before the object is destroyed, without requiring manual invocation, and it will be called only once.",[120,121,126],"pre",{"className":122,"code":123,"language":124,"meta":125,"style":125},"language-cpp shiki shiki-themes github-light github-dark","class Person\n{\npublic:\n    \u002F\u002F构造函数\n    Person()\n    {\n        cout \u003C\u003C \"Person的构造函数调用\" \u003C\u003C endl;\n    }\n    \u002F\u002F析构函数\n    ~Person()\n    {\n        cout \u003C\u003C \"Person的析构函数调用\" \u003C\u003C endl;\n    }\n\n};\n\nvoid test01()\n{\n    Person p;\n}\n\nint main() {\n    \n    test01();\n\n\n    return 0;\n}\n","cpp","",[81,127,128,141,148,154,161,170,176,195,201,207,215,220,234,239,246,252,257,268,273,279,285,290,302,308,317,322,327,340],{"__ignoreMap":125},[129,130,133,137],"span",{"class":131,"line":132},"line",1,[129,134,136],{"class":135},"szBVR","class",[129,138,140],{"class":139},"sScJk"," Person\n",[129,142,144],{"class":131,"line":143},2,[129,145,147],{"class":146},"sVt8B","{\n",[129,149,151],{"class":131,"line":150},3,[129,152,153],{"class":135},"public:\n",[129,155,157],{"class":131,"line":156},4,[129,158,160],{"class":159},"sJ8bj","    \u002F\u002F构造函数\n",[129,162,164,167],{"class":131,"line":163},5,[129,165,166],{"class":139},"    Person",[129,168,169],{"class":146},"()\n",[129,171,173],{"class":131,"line":172},6,[129,174,175],{"class":146},"    {\n",[129,177,179,182,185,189,192],{"class":131,"line":178},7,[129,180,181],{"class":146},"        cout ",[129,183,184],{"class":135},"\u003C\u003C",[129,186,188],{"class":187},"sZZnC"," \"Person的构造函数调用\"",[129,190,191],{"class":135}," \u003C\u003C",[129,193,194],{"class":146}," endl;\n",[129,196,198],{"class":131,"line":197},8,[129,199,200],{"class":146},"    }\n",[129,202,204],{"class":131,"line":203},9,[129,205,206],{"class":159},"    \u002F\u002F析构函数\n",[129,208,210,213],{"class":131,"line":209},10,[129,211,212],{"class":139},"    ~Person",[129,214,169],{"class":146},[129,216,218],{"class":131,"line":217},11,[129,219,175],{"class":146},[129,221,223,225,227,230,232],{"class":131,"line":222},12,[129,224,181],{"class":146},[129,226,184],{"class":135},[129,228,229],{"class":187}," \"Person的析构函数调用\"",[129,231,191],{"class":135},[129,233,194],{"class":146},[129,235,237],{"class":131,"line":236},13,[129,238,200],{"class":146},[129,240,242],{"class":131,"line":241},14,[129,243,245],{"emptyLinePlaceholder":244},true,"\n",[129,247,249],{"class":131,"line":248},15,[129,250,251],{"class":146},"};\n",[129,253,255],{"class":131,"line":254},16,[129,256,245],{"emptyLinePlaceholder":244},[129,258,260,263,266],{"class":131,"line":259},17,[129,261,262],{"class":135},"void",[129,264,265],{"class":139}," test01",[129,267,169],{"class":146},[129,269,271],{"class":131,"line":270},18,[129,272,147],{"class":146},[129,274,276],{"class":131,"line":275},19,[129,277,278],{"class":146},"    Person p;\n",[129,280,282],{"class":131,"line":281},20,[129,283,284],{"class":146},"}\n",[129,286,288],{"class":131,"line":287},21,[129,289,245],{"emptyLinePlaceholder":244},[129,291,293,296,299],{"class":131,"line":292},22,[129,294,295],{"class":135},"int",[129,297,298],{"class":139}," main",[129,300,301],{"class":146},"() {\n",[129,303,305],{"class":131,"line":304},23,[129,306,307],{"class":146},"    \n",[129,309,311,314],{"class":131,"line":310},24,[129,312,313],{"class":139},"    test01",[129,315,316],{"class":146},"();\n",[129,318,320],{"class":131,"line":319},25,[129,321,245],{"emptyLinePlaceholder":244},[129,323,325],{"class":131,"line":324},26,[129,326,245],{"emptyLinePlaceholder":244},[129,328,330,333,337],{"class":131,"line":329},27,[129,331,332],{"class":135},"    return",[129,334,336],{"class":335},"sj4cs"," 0",[129,338,339],{"class":146},";\n",[129,341,343],{"class":131,"line":342},28,[129,344,284],{"class":146},[29,346,347],{},[33,348,349],{},"运行结果：",[120,351,356],{"className":352,"code":354,"language":355,"meta":125},[353],"language-text","Person的构造函数调用\nPerson的析构函数调用\n","text",[81,357,354],{"__ignoreMap":125},[24,359,361],{"id":360},"classification-and-invocation-of-constructors","Classification and Invocation of Constructors",[29,363,364],{},"Two classification methods:",[29,366,367],{},"Classified by parameters: parameterized constructors and non-parameterized constructors",[29,369,370],{},"Divided by type: regular construction and copy construction",[29,372,373],{},"Three calling methods:",[29,375,376],{},"Parentheses method",[29,378,379],{},"Display Method",[29,381,382],{},"Implicit conversion method",[29,384,385],{},[33,386,387],{},"Example:",[120,389,391],{"className":122,"code":390,"language":124,"meta":125,"style":125},"\u002F\u002F1、构造函数分类\n\u002F\u002F 按照参数分类分为 有参和无参构造   无参又称为默认构造函数\n\u002F\u002F 按照类型分类分为 普通构造和拷贝构造\n\nclass Person {\npublic:\n    \u002F\u002F无参（默认）构造函数\n    Person() {\n        cout \u003C\u003C \"无参构造函数!\" \u003C\u003C endl;\n    }\n    \u002F\u002F有参构造函数\n    Person(int a) {\n        age = a;\n        cout \u003C\u003C \"有参构造函数!\" \u003C\u003C endl;\n    }\n    \u002F\u002F拷贝构造函数\n    Person(const Person& p) {\n        age = p.age;\n        cout \u003C\u003C \"拷贝构造函数!\" \u003C\u003C endl;\n    }\n    \u002F\u002F析构函数\n    ~Person() {\n        cout \u003C\u003C \"析构函数!\" \u003C\u003C endl;\n    }\npublic:\n    int age;\n};\n\n\u002F\u002F2、构造函数的调用\n\u002F\u002F调用无参构造函数\nvoid test01() {\n    Person p; \u002F\u002F调用无参构造函数\n}\n\n\u002F\u002F调用有参的构造函数\nvoid test02() {\n\n    \u002F\u002F2.1  括号法，常用\n    Person p1(10);\n    \u002F\u002F注意1：调用无参构造函数不能加括号，如果加了编译器认为这是一个函数声明\n    \u002F\u002FPerson p2();\n\n    \u002F\u002F2.2 显式法\n    Person p2 = Person(10); \n    Person p3 = Person(p2);\n    \u002F\u002FPerson(10)单独写就是匿名对象  当前行结束之后，马上析构\n\n    \u002F\u002F2.3 隐式转换法\n    Person p4 = 10; \u002F\u002F Person p4 = Person(10); \n    Person p5 = p4; \u002F\u002F Person p5 = Person(p4); \n\n    \u002F\u002F注意2：不能利用 拷贝构造函数 初始化匿名对象 编译器认为是对象声明\n    \u002F\u002FPerson p5(p4);\n}\n\nint main() {\n\n    test01();\n    \u002F\u002Ftest02();\n\n\n    return 0;\n}\n",[81,392,393,398,403,408,412,422,426,431,437,450,454,459,475,486,499,503,508,527,536,549,553,557,563,576,580,584,592,596,600,606,612,621,630,635,640,646,656,661,667,684,690,696,701,707,724,737,743,748,754,771,785,790,796,802,807,812,821,826,833,839,844,849,858],{"__ignoreMap":125},[129,394,395],{"class":131,"line":132},[129,396,397],{"class":159},"\u002F\u002F1、构造函数分类\n",[129,399,400],{"class":131,"line":143},[129,401,402],{"class":159},"\u002F\u002F 按照参数分类分为 有参和无参构造   无参又称为默认构造函数\n",[129,404,405],{"class":131,"line":150},[129,406,407],{"class":159},"\u002F\u002F 按照类型分类分为 普通构造和拷贝构造\n",[129,409,410],{"class":131,"line":156},[129,411,245],{"emptyLinePlaceholder":244},[129,413,414,416,419],{"class":131,"line":163},[129,415,136],{"class":135},[129,417,418],{"class":139}," Person",[129,420,421],{"class":146}," {\n",[129,423,424],{"class":131,"line":172},[129,425,153],{"class":135},[129,427,428],{"class":131,"line":178},[129,429,430],{"class":159},"    \u002F\u002F无参（默认）构造函数\n",[129,432,433,435],{"class":131,"line":197},[129,434,166],{"class":139},[129,436,301],{"class":146},[129,438,439,441,443,446,448],{"class":131,"line":203},[129,440,181],{"class":146},[129,442,184],{"class":135},[129,444,445],{"class":187}," \"无参构造函数!\"",[129,447,191],{"class":135},[129,449,194],{"class":146},[129,451,452],{"class":131,"line":209},[129,453,200],{"class":146},[129,455,456],{"class":131,"line":217},[129,457,458],{"class":159},"    \u002F\u002F有参构造函数\n",[129,460,461,463,466,468,472],{"class":131,"line":222},[129,462,166],{"class":139},[129,464,465],{"class":146},"(",[129,467,295],{"class":135},[129,469,471],{"class":470},"s4XuR"," a",[129,473,474],{"class":146},") {\n",[129,476,477,480,483],{"class":131,"line":236},[129,478,479],{"class":146},"        age ",[129,481,482],{"class":135},"=",[129,484,485],{"class":146}," a;\n",[129,487,488,490,492,495,497],{"class":131,"line":241},[129,489,181],{"class":146},[129,491,184],{"class":135},[129,493,494],{"class":187}," \"有参构造函数!\"",[129,496,191],{"class":135},[129,498,194],{"class":146},[129,500,501],{"class":131,"line":248},[129,502,200],{"class":146},[129,504,505],{"class":131,"line":254},[129,506,507],{"class":159},"    \u002F\u002F拷贝构造函数\n",[129,509,510,512,514,517,519,522,525],{"class":131,"line":259},[129,511,166],{"class":139},[129,513,465],{"class":146},[129,515,516],{"class":135},"const",[129,518,418],{"class":139},[129,520,521],{"class":135},"&",[129,523,524],{"class":470}," p",[129,526,474],{"class":146},[129,528,529,531,533],{"class":131,"line":270},[129,530,479],{"class":146},[129,532,482],{"class":135},[129,534,535],{"class":146}," p.age;\n",[129,537,538,540,542,545,547],{"class":131,"line":275},[129,539,181],{"class":146},[129,541,184],{"class":135},[129,543,544],{"class":187}," \"拷贝构造函数!\"",[129,546,191],{"class":135},[129,548,194],{"class":146},[129,550,551],{"class":131,"line":281},[129,552,200],{"class":146},[129,554,555],{"class":131,"line":287},[129,556,206],{"class":159},[129,558,559,561],{"class":131,"line":292},[129,560,212],{"class":139},[129,562,301],{"class":146},[129,564,565,567,569,572,574],{"class":131,"line":304},[129,566,181],{"class":146},[129,568,184],{"class":135},[129,570,571],{"class":187}," \"析构函数!\"",[129,573,191],{"class":135},[129,575,194],{"class":146},[129,577,578],{"class":131,"line":310},[129,579,200],{"class":146},[129,581,582],{"class":131,"line":319},[129,583,153],{"class":135},[129,585,586,589],{"class":131,"line":324},[129,587,588],{"class":135},"    int",[129,590,591],{"class":146}," age;\n",[129,593,594],{"class":131,"line":329},[129,595,251],{"class":146},[129,597,598],{"class":131,"line":342},[129,599,245],{"emptyLinePlaceholder":244},[129,601,603],{"class":131,"line":602},29,[129,604,605],{"class":159},"\u002F\u002F2、构造函数的调用\n",[129,607,609],{"class":131,"line":608},30,[129,610,611],{"class":159},"\u002F\u002F调用无参构造函数\n",[129,613,615,617,619],{"class":131,"line":614},31,[129,616,262],{"class":135},[129,618,265],{"class":139},[129,620,301],{"class":146},[129,622,624,627],{"class":131,"line":623},32,[129,625,626],{"class":146},"    Person p;",[129,628,629],{"class":159}," \u002F\u002F调用无参构造函数\n",[129,631,633],{"class":131,"line":632},33,[129,634,284],{"class":146},[129,636,638],{"class":131,"line":637},34,[129,639,245],{"emptyLinePlaceholder":244},[129,641,643],{"class":131,"line":642},35,[129,644,645],{"class":159},"\u002F\u002F调用有参的构造函数\n",[129,647,649,651,654],{"class":131,"line":648},36,[129,650,262],{"class":135},[129,652,653],{"class":139}," test02",[129,655,301],{"class":146},[129,657,659],{"class":131,"line":658},37,[129,660,245],{"emptyLinePlaceholder":244},[129,662,664],{"class":131,"line":663},38,[129,665,666],{"class":159},"    \u002F\u002F2.1  括号法，常用\n",[129,668,670,673,676,678,681],{"class":131,"line":669},39,[129,671,672],{"class":146},"    Person ",[129,674,675],{"class":139},"p1",[129,677,465],{"class":146},[129,679,680],{"class":335},"10",[129,682,683],{"class":146},");\n",[129,685,687],{"class":131,"line":686},40,[129,688,689],{"class":159},"    \u002F\u002F注意1：调用无参构造函数不能加括号，如果加了编译器认为这是一个函数声明\n",[129,691,693],{"class":131,"line":692},41,[129,694,695],{"class":159},"    \u002F\u002FPerson p2();\n",[129,697,699],{"class":131,"line":698},42,[129,700,245],{"emptyLinePlaceholder":244},[129,702,704],{"class":131,"line":703},43,[129,705,706],{"class":159},"    \u002F\u002F2.2 显式法\n",[129,708,710,713,715,717,719,721],{"class":131,"line":709},44,[129,711,712],{"class":146},"    Person p2 ",[129,714,482],{"class":135},[129,716,418],{"class":139},[129,718,465],{"class":146},[129,720,680],{"class":335},[129,722,723],{"class":146},"); \n",[129,725,727,730,732,734],{"class":131,"line":726},45,[129,728,729],{"class":146},"    Person p3 ",[129,731,482],{"class":135},[129,733,418],{"class":139},[129,735,736],{"class":146},"(p2);\n",[129,738,740],{"class":131,"line":739},46,[129,741,742],{"class":159},"    \u002F\u002FPerson(10)单独写就是匿名对象  当前行结束之后，马上析构\n",[129,744,746],{"class":131,"line":745},47,[129,747,245],{"emptyLinePlaceholder":244},[129,749,751],{"class":131,"line":750},48,[129,752,753],{"class":159},"    \u002F\u002F2.3 隐式转换法\n",[129,755,757,760,762,765,768],{"class":131,"line":756},49,[129,758,759],{"class":146},"    Person p4 ",[129,761,482],{"class":135},[129,763,764],{"class":335}," 10",[129,766,767],{"class":146},";",[129,769,770],{"class":159}," \u002F\u002F Person p4 = Person(10); \n",[129,772,774,777,779,782],{"class":131,"line":773},50,[129,775,776],{"class":146},"    Person p5 ",[129,778,482],{"class":135},[129,780,781],{"class":146}," p4;",[129,783,784],{"class":159}," \u002F\u002F Person p5 = Person(p4); \n",[129,786,788],{"class":131,"line":787},51,[129,789,245],{"emptyLinePlaceholder":244},[129,791,793],{"class":131,"line":792},52,[129,794,795],{"class":159},"    \u002F\u002F注意2：不能利用 拷贝构造函数 初始化匿名对象 编译器认为是对象声明\n",[129,797,799],{"class":131,"line":798},53,[129,800,801],{"class":159},"    \u002F\u002FPerson p5(p4);\n",[129,803,805],{"class":131,"line":804},54,[129,806,284],{"class":146},[129,808,810],{"class":131,"line":809},55,[129,811,245],{"emptyLinePlaceholder":244},[129,813,815,817,819],{"class":131,"line":814},56,[129,816,295],{"class":135},[129,818,298],{"class":139},[129,820,301],{"class":146},[129,822,824],{"class":131,"line":823},57,[129,825,245],{"emptyLinePlaceholder":244},[129,827,829,831],{"class":131,"line":828},58,[129,830,313],{"class":139},[129,832,316],{"class":146},[129,834,836],{"class":131,"line":835},59,[129,837,838],{"class":159},"    \u002F\u002Ftest02();\n",[129,840,842],{"class":131,"line":841},60,[129,843,245],{"emptyLinePlaceholder":244},[129,845,847],{"class":131,"line":846},61,[129,848,245],{"emptyLinePlaceholder":244},[129,850,852,854,856],{"class":131,"line":851},62,[129,853,332],{"class":135},[129,855,336],{"class":335},[129,857,339],{"class":146},[129,859,861],{"class":131,"line":860},63,[129,862,284],{"class":146},[29,864,865],{},[33,866,349],{},[120,868,871],{"className":869,"code":870,"language":355,"meta":125},[353],"无参构造函数!\n析构函数!\n",[81,872,870],{"__ignoreMap":125},[24,874,876],{"id":875},"copy-constructor-invocation-timing","Copy constructor invocation timing",[29,878,879],{},"In C++, the copy constructor is typically called in three situations:",[85,881,882,885,888],{},[17,883,884],{},"When initializing a new object as a copy of an existing object of the same type.",[17,886,887],{},"When an object is passed by value as a function argument.",[17,889,890],{},"When an object is returned by value from a function.",[14,892,893,896,899],{},[17,894,895],{},"Initialize a new object using an already existing object.",[17,897,898],{},"Pass values to function parameters by value.",[17,900,901],{},[33,902,903],{},"Returning a Local Object by Value",[29,905,906],{},"When a function returns a local object by value, it creates a copy of that object to pass to the caller. This ensures the object remains valid after the function's scope ends.",[29,908,909],{},[33,910,911],{},"Key Points:",[14,913,914,920,926],{},[17,915,916,919],{},[33,917,918],{},"Safety:"," The caller receives an independent copy, eliminating risks like dangling references or pointers to memory that is no longer valid.",[17,921,922,925],{},[33,923,924],{},"Performance:"," It involves a copy (or move) operation. Modern compilers often optimize this through techniques like Copy Elision (e.g., RVO - Return Value Optimization, NRVO - Named Return Value Optimization) or move semantics, potentially reducing the cost.",[17,927,928,931],{},[33,929,930],{},"Use Case:"," This is the default and recommended way to return objects when ownership should be transferred to the caller and the object is not expensive to copy.",[29,933,934],{},[33,935,387],{},[120,937,939],{"className":122,"code":938,"language":124,"meta":125,"style":125},"class Person {\npublic:\n    Person() {\n        cout \u003C\u003C \"无参构造函数!\" \u003C\u003C endl;\n        mAge = 0;\n    }\n    Person(int age) {\n        cout \u003C\u003C \"有参构造函数!\" \u003C\u003C endl;\n        mAge = age;\n    }\n    Person(const Person& p) {\n        cout \u003C\u003C \"拷贝构造函数!\" \u003C\u003C endl;\n        mAge = p.mAge;\n    }\n    \u002F\u002F析构函数在释放内存之前调用\n    ~Person() {\n        cout \u003C\u003C \"析构函数!\" \u003C\u003C endl;\n    }\npublic:\n    int mAge;\n};\n\n\u002F\u002F1. 使用一个已经创建完毕的对象来初始化一个新对象\nvoid test01() {\n\n    Person man(100); \u002F\u002Fp对象已经创建完毕\n    Person newman(man); \u002F\u002F调用拷贝构造函数\n    Person newman2 = man; \u002F\u002F拷贝构造\n\n    \u002F\u002FPerson newman3;\n    \u002F\u002Fnewman3 = man; \u002F\u002F不是调用拷贝构造函数，赋值操作\n}\n\n\u002F\u002F2. 值传递的方式给函数参数传值\n\u002F\u002F相当于Person p1 = p;\nvoid doWork(Person p1) {}\nvoid test02() {\n    Person p; \u002F\u002F无参构造函数\n    doWork(p);\n}\n\n\u002F\u002F3. 以值方式返回局部对象\nPerson doWork2()\n{\n    Person p1;\n    cout \u003C\u003C (int *)&p1 \u003C\u003C endl;\n    return p1;\n}\n\nvoid test03()\n{\n    Person p = doWork2();\n    cout \u003C\u003C (int *)&p \u003C\u003C endl;\n}\n\nint main() {\n\n    \u002F\u002Ftest01();\n    \u002F\u002Ftest02();\n    test03();\n\n\n    return 0;\n}\n",[81,940,941,949,953,959,971,982,986,999,1011,1019,1023,1039,1051,1060,1064,1069,1075,1087,1091,1095,1102,1106,1110,1115,1123,1127,1145,1158,1171,1175,1180,1188,1192,1196,1201,1206,1224,1232,1239,1247,1251,1255,1260,1269,1273,1278,1305,1312,1316,1320,1329,1333,1344,1367,1371,1375,1383,1387,1392,1396,1403,1407,1411,1419],{"__ignoreMap":125},[129,942,943,945,947],{"class":131,"line":132},[129,944,136],{"class":135},[129,946,418],{"class":139},[129,948,421],{"class":146},[129,950,951],{"class":131,"line":143},[129,952,153],{"class":135},[129,954,955,957],{"class":131,"line":150},[129,956,166],{"class":139},[129,958,301],{"class":146},[129,960,961,963,965,967,969],{"class":131,"line":156},[129,962,181],{"class":146},[129,964,184],{"class":135},[129,966,445],{"class":187},[129,968,191],{"class":135},[129,970,194],{"class":146},[129,972,973,976,978,980],{"class":131,"line":163},[129,974,975],{"class":146},"        mAge ",[129,977,482],{"class":135},[129,979,336],{"class":335},[129,981,339],{"class":146},[129,983,984],{"class":131,"line":172},[129,985,200],{"class":146},[129,987,988,990,992,994,997],{"class":131,"line":178},[129,989,166],{"class":139},[129,991,465],{"class":146},[129,993,295],{"class":135},[129,995,996],{"class":470}," age",[129,998,474],{"class":146},[129,1000,1001,1003,1005,1007,1009],{"class":131,"line":197},[129,1002,181],{"class":146},[129,1004,184],{"class":135},[129,1006,494],{"class":187},[129,1008,191],{"class":135},[129,1010,194],{"class":146},[129,1012,1013,1015,1017],{"class":131,"line":203},[129,1014,975],{"class":146},[129,1016,482],{"class":135},[129,1018,591],{"class":146},[129,1020,1021],{"class":131,"line":209},[129,1022,200],{"class":146},[129,1024,1025,1027,1029,1031,1033,1035,1037],{"class":131,"line":217},[129,1026,166],{"class":139},[129,1028,465],{"class":146},[129,1030,516],{"class":135},[129,1032,418],{"class":139},[129,1034,521],{"class":135},[129,1036,524],{"class":470},[129,1038,474],{"class":146},[129,1040,1041,1043,1045,1047,1049],{"class":131,"line":222},[129,1042,181],{"class":146},[129,1044,184],{"class":135},[129,1046,544],{"class":187},[129,1048,191],{"class":135},[129,1050,194],{"class":146},[129,1052,1053,1055,1057],{"class":131,"line":236},[129,1054,975],{"class":146},[129,1056,482],{"class":135},[129,1058,1059],{"class":146}," p.mAge;\n",[129,1061,1062],{"class":131,"line":241},[129,1063,200],{"class":146},[129,1065,1066],{"class":131,"line":248},[129,1067,1068],{"class":159},"    \u002F\u002F析构函数在释放内存之前调用\n",[129,1070,1071,1073],{"class":131,"line":254},[129,1072,212],{"class":139},[129,1074,301],{"class":146},[129,1076,1077,1079,1081,1083,1085],{"class":131,"line":259},[129,1078,181],{"class":146},[129,1080,184],{"class":135},[129,1082,571],{"class":187},[129,1084,191],{"class":135},[129,1086,194],{"class":146},[129,1088,1089],{"class":131,"line":270},[129,1090,200],{"class":146},[129,1092,1093],{"class":131,"line":275},[129,1094,153],{"class":135},[129,1096,1097,1099],{"class":131,"line":281},[129,1098,588],{"class":135},[129,1100,1101],{"class":146}," mAge;\n",[129,1103,1104],{"class":131,"line":287},[129,1105,251],{"class":146},[129,1107,1108],{"class":131,"line":292},[129,1109,245],{"emptyLinePlaceholder":244},[129,1111,1112],{"class":131,"line":304},[129,1113,1114],{"class":159},"\u002F\u002F1. 使用一个已经创建完毕的对象来初始化一个新对象\n",[129,1116,1117,1119,1121],{"class":131,"line":310},[129,1118,262],{"class":135},[129,1120,265],{"class":139},[129,1122,301],{"class":146},[129,1124,1125],{"class":131,"line":319},[129,1126,245],{"emptyLinePlaceholder":244},[129,1128,1129,1131,1134,1136,1139,1142],{"class":131,"line":324},[129,1130,672],{"class":146},[129,1132,1133],{"class":139},"man",[129,1135,465],{"class":146},[129,1137,1138],{"class":335},"100",[129,1140,1141],{"class":146},");",[129,1143,1144],{"class":159}," \u002F\u002Fp对象已经创建完毕\n",[129,1146,1147,1149,1152,1155],{"class":131,"line":329},[129,1148,672],{"class":146},[129,1150,1151],{"class":139},"newman",[129,1153,1154],{"class":146},"(man);",[129,1156,1157],{"class":159}," \u002F\u002F调用拷贝构造函数\n",[129,1159,1160,1163,1165,1168],{"class":131,"line":342},[129,1161,1162],{"class":146},"    Person newman2 ",[129,1164,482],{"class":135},[129,1166,1167],{"class":146}," man;",[129,1169,1170],{"class":159}," \u002F\u002F拷贝构造\n",[129,1172,1173],{"class":131,"line":602},[129,1174,245],{"emptyLinePlaceholder":244},[129,1176,1177],{"class":131,"line":608},[129,1178,1179],{"class":159},"    \u002F\u002FPerson newman3;\n",[129,1181,1182,1185],{"class":131,"line":614},[129,1183,1184],{"class":159},"    \u002F\u002Fnewman3 = man;",[129,1186,1187],{"class":159}," \u002F\u002F不是调用拷贝构造函数，赋值操作\n",[129,1189,1190],{"class":131,"line":623},[129,1191,284],{"class":146},[129,1193,1194],{"class":131,"line":632},[129,1195,245],{"emptyLinePlaceholder":244},[129,1197,1198],{"class":131,"line":637},[129,1199,1200],{"class":159},"\u002F\u002F2. 值传递的方式给函数参数传值\n",[129,1202,1203],{"class":131,"line":642},[129,1204,1205],{"class":159},"\u002F\u002F相当于Person p1 = p;\n",[129,1207,1208,1210,1213,1215,1218,1221],{"class":131,"line":648},[129,1209,262],{"class":135},[129,1211,1212],{"class":139}," doWork",[129,1214,465],{"class":146},[129,1216,1217],{"class":139},"Person",[129,1219,1220],{"class":470}," p1",[129,1222,1223],{"class":146},") {}\n",[129,1225,1226,1228,1230],{"class":131,"line":658},[129,1227,262],{"class":135},[129,1229,653],{"class":139},[129,1231,301],{"class":146},[129,1233,1234,1236],{"class":131,"line":663},[129,1235,626],{"class":146},[129,1237,1238],{"class":159}," \u002F\u002F无参构造函数\n",[129,1240,1241,1244],{"class":131,"line":669},[129,1242,1243],{"class":139},"    doWork",[129,1245,1246],{"class":146},"(p);\n",[129,1248,1249],{"class":131,"line":686},[129,1250,284],{"class":146},[129,1252,1253],{"class":131,"line":692},[129,1254,245],{"emptyLinePlaceholder":244},[129,1256,1257],{"class":131,"line":698},[129,1258,1259],{"class":159},"\u002F\u002F3. 以值方式返回局部对象\n",[129,1261,1262,1264,1267],{"class":131,"line":703},[129,1263,1217],{"class":139},[129,1265,1266],{"class":139}," doWork2",[129,1268,169],{"class":146},[129,1270,1271],{"class":131,"line":709},[129,1272,147],{"class":146},[129,1274,1275],{"class":131,"line":726},[129,1276,1277],{"class":146},"    Person p1;\n",[129,1279,1280,1283,1285,1288,1290,1293,1296,1298,1301,1303],{"class":131,"line":739},[129,1281,1282],{"class":146},"    cout ",[129,1284,184],{"class":135},[129,1286,1287],{"class":146}," (",[129,1289,295],{"class":135},[129,1291,1292],{"class":135}," *",[129,1294,1295],{"class":146},")",[129,1297,521],{"class":135},[129,1299,1300],{"class":146},"p1 ",[129,1302,184],{"class":135},[129,1304,194],{"class":146},[129,1306,1307,1309],{"class":131,"line":745},[129,1308,332],{"class":135},[129,1310,1311],{"class":146}," p1;\n",[129,1313,1314],{"class":131,"line":750},[129,1315,284],{"class":146},[129,1317,1318],{"class":131,"line":756},[129,1319,245],{"emptyLinePlaceholder":244},[129,1321,1322,1324,1327],{"class":131,"line":773},[129,1323,262],{"class":135},[129,1325,1326],{"class":139}," test03",[129,1328,169],{"class":146},[129,1330,1331],{"class":131,"line":787},[129,1332,147],{"class":146},[129,1334,1335,1338,1340,1342],{"class":131,"line":792},[129,1336,1337],{"class":146},"    Person p ",[129,1339,482],{"class":135},[129,1341,1266],{"class":139},[129,1343,316],{"class":146},[129,1345,1346,1348,1350,1352,1354,1356,1358,1360,1363,1365],{"class":131,"line":798},[129,1347,1282],{"class":146},[129,1349,184],{"class":135},[129,1351,1287],{"class":146},[129,1353,295],{"class":135},[129,1355,1292],{"class":135},[129,1357,1295],{"class":146},[129,1359,521],{"class":135},[129,1361,1362],{"class":146},"p ",[129,1364,184],{"class":135},[129,1366,194],{"class":146},[129,1368,1369],{"class":131,"line":804},[129,1370,284],{"class":146},[129,1372,1373],{"class":131,"line":809},[129,1374,245],{"emptyLinePlaceholder":244},[129,1376,1377,1379,1381],{"class":131,"line":814},[129,1378,295],{"class":135},[129,1380,298],{"class":139},[129,1382,301],{"class":146},[129,1384,1385],{"class":131,"line":823},[129,1386,245],{"emptyLinePlaceholder":244},[129,1388,1389],{"class":131,"line":828},[129,1390,1391],{"class":159},"    \u002F\u002Ftest01();\n",[129,1393,1394],{"class":131,"line":835},[129,1395,838],{"class":159},[129,1397,1398,1401],{"class":131,"line":841},[129,1399,1400],{"class":139},"    test03",[129,1402,316],{"class":146},[129,1404,1405],{"class":131,"line":846},[129,1406,245],{"emptyLinePlaceholder":244},[129,1408,1409],{"class":131,"line":851},[129,1410,245],{"emptyLinePlaceholder":244},[129,1412,1413,1415,1417],{"class":131,"line":860},[129,1414,332],{"class":135},[129,1416,336],{"class":335},[129,1418,339],{"class":146},[129,1420,1422],{"class":131,"line":1421},64,[129,1423,284],{"class":146},[29,1425,1426],{},[33,1427,1428,1429,1432],{},"运行结果（地址每次运行可能不同，以下用 ",[81,1430,1431],{},"\u003C地址>"," 表示）：",[120,1434,1437],{"className":1435,"code":1436,"language":355,"meta":125},[353],"无参构造函数!\n\u003C地址>\n\u003C地址>\n析构函数!\n",[81,1438,1436],{"__ignoreMap":125},[24,1440,1441],{"id":1441},"构造函数调用规则",[29,1443,1444],{},"在面向对象编程中，构造函数的调用遵循以下基本规则：",[85,1446,1447,1453,1459,1481,1487],{},[17,1448,1449,1452],{},[33,1450,1451],{},"自动调用","：构造函数在对象创建时由系统自动调用，无需显式执行。",[17,1454,1455,1458],{},[33,1456,1457],{},"默认构造函数","：若未定义任何构造函数，编译器会提供无参的默认构造函数；若已定义其他构造函数，则默认构造函数不再自动提供。",[17,1460,1461,1464,1465],{},[33,1462,1463],{},"显式调用","：\n",[14,1466,1467,1474],{},[17,1468,1469,1470,1473],{},"可通过 ",[81,1471,1472],{},"new"," 关键字或对象初始化语法触发。",[17,1475,1476,1477,1480],{},"在继承中，子类构造函数默认调用父类无参构造函数；若需调用父类带参构造函数，须使用 ",[81,1478,1479],{},"super(参数)"," 显式指定。",[17,1482,1483,1486],{},[33,1484,1485],{},"重载与匹配","：构造函数支持重载，调用时根据参数类型和数量匹配对应的构造函数。",[17,1488,1489,1492],{},[33,1490,1491],{},"初始化顺序","：执行构造函数前，系统会先初始化成员变量（按声明顺序），并调用父类构造函数。",[1494,1495,1496],"blockquote",{},[29,1497,1498],{},"注：具体规则可能因编程语言（如 Java、C++）而略有差异，需结合语言特性使用。",[29,1500,1501],{},"By default, the C++ compiler adds at least three functions to a class.",[85,1503,1504,1507,1510],{},[17,1505,1506],{},"Default constructor (no parameters, empty function body)",[17,1508,1509],{},"Default destructor (parameterless with an empty function body)",[17,1511,1512],{},"The default copy constructor performs value copying of properties",[29,1514,1515],{},"Constructor call rules are as follows:",[14,1517,1518,1521],{},[17,1519,1520],{},"If the user defines a parameterized constructor, C++ no longer provides a default no-argument constructor, but it will provide a default copy constructor.",[17,1522,1523],{},"If a user defines a copy constructor, C++ will not provide any other constructors.",[29,1525,387],{},[120,1527,1529],{"className":122,"code":1528,"language":124,"meta":125,"style":125},"class Person {\npublic:\n    \u002F\u002F无参（默认）构造函数\n    Person() {\n        cout \u003C\u003C \"无参构造函数!\" \u003C\u003C endl;\n    }\n    \u002F\u002F有参构造函数\n    Person(int a) {\n        age = a;\n        cout \u003C\u003C \"有参构造函数!\" \u003C\u003C endl;\n    }\n    \u002F\u002F拷贝构造函数\n    Person(const Person& p) {\n        age = p.age;\n        cout \u003C\u003C \"拷贝构造函数!\" \u003C\u003C endl;\n    }\n    \u002F\u002F析构函数\n    ~Person() {\n        cout \u003C\u003C \"析构函数!\" \u003C\u003C endl;\n    }\npublic:\n    int age;\n};\n\nvoid test01()\n{\n    Person p1(18);\n    \u002F\u002F如果不写拷贝构造，编译器会自动添加拷贝构造，并且做浅拷贝操作\n    Person p2(p1);\n\n    cout \u003C\u003C \"p2的年龄为： \" \u003C\u003C p2.age \u003C\u003C endl;\n}\n\nvoid test02()\n{\n    \u002F\u002F如果用户提供有参构造，编译器不会提供默认构造，会提供拷贝构造\n    Person p1; \u002F\u002F此时如果用户自己没有提供默认构造，会出错\n    Person p2(10); \u002F\u002F用户提供的有参\n    Person p3(p2); \u002F\u002F此时如果用户没有提供拷贝构造，编译器会提供\n\n    \u002F\u002F如果用户提供拷贝构造，编译器不会提供其他构造函数\n    Person p4; \u002F\u002F此时如果用户自己没有提供默认构造，会出错\n    Person p5(10); \u002F\u002F此时如果用户自己没有提供有参，会出错\n    Person p6(p5); \u002F\u002F用户自己提供拷贝构造\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[81,1530,1531,1539,1543,1547,1553,1565,1569,1573,1585,1593,1605,1609,1613,1629,1637,1649,1653,1657,1663,1675,1679,1683,1689,1693,1697,1705,1709,1722,1727,1737,1741,1759,1763,1767,1775,1779,1784,1792,1807,1820,1824,1829,1836,1852,1865,1869,1873,1881,1885,1891,1895,1899,1907],{"__ignoreMap":125},[129,1532,1533,1535,1537],{"class":131,"line":132},[129,1534,136],{"class":135},[129,1536,418],{"class":139},[129,1538,421],{"class":146},[129,1540,1541],{"class":131,"line":143},[129,1542,153],{"class":135},[129,1544,1545],{"class":131,"line":150},[129,1546,430],{"class":159},[129,1548,1549,1551],{"class":131,"line":156},[129,1550,166],{"class":139},[129,1552,301],{"class":146},[129,1554,1555,1557,1559,1561,1563],{"class":131,"line":163},[129,1556,181],{"class":146},[129,1558,184],{"class":135},[129,1560,445],{"class":187},[129,1562,191],{"class":135},[129,1564,194],{"class":146},[129,1566,1567],{"class":131,"line":172},[129,1568,200],{"class":146},[129,1570,1571],{"class":131,"line":178},[129,1572,458],{"class":159},[129,1574,1575,1577,1579,1581,1583],{"class":131,"line":197},[129,1576,166],{"class":139},[129,1578,465],{"class":146},[129,1580,295],{"class":135},[129,1582,471],{"class":470},[129,1584,474],{"class":146},[129,1586,1587,1589,1591],{"class":131,"line":203},[129,1588,479],{"class":146},[129,1590,482],{"class":135},[129,1592,485],{"class":146},[129,1594,1595,1597,1599,1601,1603],{"class":131,"line":209},[129,1596,181],{"class":146},[129,1598,184],{"class":135},[129,1600,494],{"class":187},[129,1602,191],{"class":135},[129,1604,194],{"class":146},[129,1606,1607],{"class":131,"line":217},[129,1608,200],{"class":146},[129,1610,1611],{"class":131,"line":222},[129,1612,507],{"class":159},[129,1614,1615,1617,1619,1621,1623,1625,1627],{"class":131,"line":236},[129,1616,166],{"class":139},[129,1618,465],{"class":146},[129,1620,516],{"class":135},[129,1622,418],{"class":139},[129,1624,521],{"class":135},[129,1626,524],{"class":470},[129,1628,474],{"class":146},[129,1630,1631,1633,1635],{"class":131,"line":241},[129,1632,479],{"class":146},[129,1634,482],{"class":135},[129,1636,535],{"class":146},[129,1638,1639,1641,1643,1645,1647],{"class":131,"line":248},[129,1640,181],{"class":146},[129,1642,184],{"class":135},[129,1644,544],{"class":187},[129,1646,191],{"class":135},[129,1648,194],{"class":146},[129,1650,1651],{"class":131,"line":254},[129,1652,200],{"class":146},[129,1654,1655],{"class":131,"line":259},[129,1656,206],{"class":159},[129,1658,1659,1661],{"class":131,"line":270},[129,1660,212],{"class":139},[129,1662,301],{"class":146},[129,1664,1665,1667,1669,1671,1673],{"class":131,"line":275},[129,1666,181],{"class":146},[129,1668,184],{"class":135},[129,1670,571],{"class":187},[129,1672,191],{"class":135},[129,1674,194],{"class":146},[129,1676,1677],{"class":131,"line":281},[129,1678,200],{"class":146},[129,1680,1681],{"class":131,"line":287},[129,1682,153],{"class":135},[129,1684,1685,1687],{"class":131,"line":292},[129,1686,588],{"class":135},[129,1688,591],{"class":146},[129,1690,1691],{"class":131,"line":304},[129,1692,251],{"class":146},[129,1694,1695],{"class":131,"line":310},[129,1696,245],{"emptyLinePlaceholder":244},[129,1698,1699,1701,1703],{"class":131,"line":319},[129,1700,262],{"class":135},[129,1702,265],{"class":139},[129,1704,169],{"class":146},[129,1706,1707],{"class":131,"line":324},[129,1708,147],{"class":146},[129,1710,1711,1713,1715,1717,1720],{"class":131,"line":329},[129,1712,672],{"class":146},[129,1714,675],{"class":139},[129,1716,465],{"class":146},[129,1718,1719],{"class":335},"18",[129,1721,683],{"class":146},[129,1723,1724],{"class":131,"line":342},[129,1725,1726],{"class":159},"    \u002F\u002F如果不写拷贝构造，编译器会自动添加拷贝构造，并且做浅拷贝操作\n",[129,1728,1729,1731,1734],{"class":131,"line":602},[129,1730,672],{"class":146},[129,1732,1733],{"class":139},"p2",[129,1735,1736],{"class":146},"(p1);\n",[129,1738,1739],{"class":131,"line":608},[129,1740,245],{"emptyLinePlaceholder":244},[129,1742,1743,1745,1747,1750,1752,1755,1757],{"class":131,"line":614},[129,1744,1282],{"class":146},[129,1746,184],{"class":135},[129,1748,1749],{"class":187}," \"p2的年龄为： \"",[129,1751,191],{"class":135},[129,1753,1754],{"class":146}," p2.age ",[129,1756,184],{"class":135},[129,1758,194],{"class":146},[129,1760,1761],{"class":131,"line":623},[129,1762,284],{"class":146},[129,1764,1765],{"class":131,"line":632},[129,1766,245],{"emptyLinePlaceholder":244},[129,1768,1769,1771,1773],{"class":131,"line":637},[129,1770,262],{"class":135},[129,1772,653],{"class":139},[129,1774,169],{"class":146},[129,1776,1777],{"class":131,"line":642},[129,1778,147],{"class":146},[129,1780,1781],{"class":131,"line":648},[129,1782,1783],{"class":159},"    \u002F\u002F如果用户提供有参构造，编译器不会提供默认构造，会提供拷贝构造\n",[129,1785,1786,1789],{"class":131,"line":658},[129,1787,1788],{"class":146},"    Person p1;",[129,1790,1791],{"class":159}," \u002F\u002F此时如果用户自己没有提供默认构造，会出错\n",[129,1793,1794,1796,1798,1800,1802,1804],{"class":131,"line":663},[129,1795,672],{"class":146},[129,1797,1733],{"class":139},[129,1799,465],{"class":146},[129,1801,680],{"class":335},[129,1803,1141],{"class":146},[129,1805,1806],{"class":159}," \u002F\u002F用户提供的有参\n",[129,1808,1809,1811,1814,1817],{"class":131,"line":669},[129,1810,672],{"class":146},[129,1812,1813],{"class":139},"p3",[129,1815,1816],{"class":146},"(p2);",[129,1818,1819],{"class":159}," \u002F\u002F此时如果用户没有提供拷贝构造，编译器会提供\n",[129,1821,1822],{"class":131,"line":686},[129,1823,245],{"emptyLinePlaceholder":244},[129,1825,1826],{"class":131,"line":692},[129,1827,1828],{"class":159},"    \u002F\u002F如果用户提供拷贝构造，编译器不会提供其他构造函数\n",[129,1830,1831,1834],{"class":131,"line":698},[129,1832,1833],{"class":146},"    Person p4;",[129,1835,1791],{"class":159},[129,1837,1838,1840,1843,1845,1847,1849],{"class":131,"line":703},[129,1839,672],{"class":146},[129,1841,1842],{"class":139},"p5",[129,1844,465],{"class":146},[129,1846,680],{"class":335},[129,1848,1141],{"class":146},[129,1850,1851],{"class":159}," \u002F\u002F此时如果用户自己没有提供有参，会出错\n",[129,1853,1854,1856,1859,1862],{"class":131,"line":709},[129,1855,672],{"class":146},[129,1857,1858],{"class":139},"p6",[129,1860,1861],{"class":146},"(p5);",[129,1863,1864],{"class":159}," \u002F\u002F用户自己提供拷贝构造\n",[129,1866,1867],{"class":131,"line":726},[129,1868,284],{"class":146},[129,1870,1871],{"class":131,"line":739},[129,1872,245],{"emptyLinePlaceholder":244},[129,1874,1875,1877,1879],{"class":131,"line":745},[129,1876,295],{"class":135},[129,1878,298],{"class":139},[129,1880,301],{"class":146},[129,1882,1883],{"class":131,"line":750},[129,1884,245],{"emptyLinePlaceholder":244},[129,1886,1887,1889],{"class":131,"line":756},[129,1888,313],{"class":139},[129,1890,316],{"class":146},[129,1892,1893],{"class":131,"line":773},[129,1894,245],{"emptyLinePlaceholder":244},[129,1896,1897],{"class":131,"line":787},[129,1898,245],{"emptyLinePlaceholder":244},[129,1900,1901,1903,1905],{"class":131,"line":792},[129,1902,332],{"class":135},[129,1904,336],{"class":335},[129,1906,339],{"class":146},[129,1908,1909],{"class":131,"line":798},[129,1910,284],{"class":146},[29,1912,1913],{},[33,1914,349],{},[120,1916,1919],{"className":1917,"code":1918,"language":355,"meta":125},[353],"有参构造函数!\n拷贝构造函数!\np2的年龄为： 18\n析构函数!\n析构函数!\n",[81,1920,1918],{"__ignoreMap":125},[24,1922,1924],{"id":1923},"deep-copy-and-shallow-copy","Deep copy and shallow copy",[29,1926,1927],{},"Deep and shallow copying is a classic interview question and a common pitfall.",[29,1929,1930],{},"Shallow copy: Simple assignment copy operation",[29,1932,1933],{},"Deep copy: Allocating new space on the heap and performing the copy",[29,1935,1936],{},[33,1937,387],{},[120,1939,1941],{"className":122,"code":1940,"language":124,"meta":125,"style":125},"class Person {\npublic:\n    \u002F\u002F无参（默认）构造函数\n    Person() {\n        cout \u003C\u003C \"无参构造函数!\" \u003C\u003C endl;\n    }\n    \u002F\u002F有参构造函数\n    Person(int age ,int height) {\n        \n        cout \u003C\u003C \"有参构造函数!\" \u003C\u003C endl;\n\n        m_age = age;\n        m_height = new int(height);\n        \n    }\n    \u002F\u002F拷贝构造函数  \n    Person(const Person& p) {\n        cout \u003C\u003C \"拷贝构造函数!\" \u003C\u003C endl;\n        \u002F\u002F如果不利用深拷贝在堆区创建新内存，会导致浅拷贝带来的重复释放堆区问题\n        m_age = p.m_age;\n        m_height = new int(*p.m_height);\n        \n    }\n\n    \u002F\u002F析构函数\n    ~Person() {\n        cout \u003C\u003C \"析构函数!\" \u003C\u003C endl;\n        if (m_height != NULL)\n        {\n            delete m_height;\n        }\n    }\npublic:\n    int m_age;\n    int* m_height;\n};\n\nvoid test01()\n{\n    Person p1(18, 180);\n\n    Person p2(p1);\n\n    cout \u003C\u003C \"p1的年龄： \" \u003C\u003C p1.m_age \u003C\u003C \" 身高： \" \u003C\u003C *p1.m_height \u003C\u003C endl;\n\n    cout \u003C\u003C \"p2的年龄： \" \u003C\u003C p2.m_age \u003C\u003C \" 身高： \" \u003C\u003C *p2.m_height \u003C\u003C endl;\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[81,1942,1943,1951,1955,1959,1965,1977,1981,1985,2005,2010,2022,2026,2035,2051,2055,2059,2064,2080,2092,2097,2106,2124,2128,2132,2136,2140,2146,2158,2175,2180,2188,2193,2197,2201,2208,2215,2219,2223,2231,2235,2253,2257,2265,2269,2299,2303,2332,2336,2340,2348,2352,2358,2362,2366,2374],{"__ignoreMap":125},[129,1944,1945,1947,1949],{"class":131,"line":132},[129,1946,136],{"class":135},[129,1948,418],{"class":139},[129,1950,421],{"class":146},[129,1952,1953],{"class":131,"line":143},[129,1954,153],{"class":135},[129,1956,1957],{"class":131,"line":150},[129,1958,430],{"class":159},[129,1960,1961,1963],{"class":131,"line":156},[129,1962,166],{"class":139},[129,1964,301],{"class":146},[129,1966,1967,1969,1971,1973,1975],{"class":131,"line":163},[129,1968,181],{"class":146},[129,1970,184],{"class":135},[129,1972,445],{"class":187},[129,1974,191],{"class":135},[129,1976,194],{"class":146},[129,1978,1979],{"class":131,"line":172},[129,1980,200],{"class":146},[129,1982,1983],{"class":131,"line":178},[129,1984,458],{"class":159},[129,1986,1987,1989,1991,1993,1995,1998,2000,2003],{"class":131,"line":197},[129,1988,166],{"class":139},[129,1990,465],{"class":146},[129,1992,295],{"class":135},[129,1994,996],{"class":470},[129,1996,1997],{"class":146}," ,",[129,1999,295],{"class":135},[129,2001,2002],{"class":470}," height",[129,2004,474],{"class":146},[129,2006,2007],{"class":131,"line":203},[129,2008,2009],{"class":146},"        \n",[129,2011,2012,2014,2016,2018,2020],{"class":131,"line":209},[129,2013,181],{"class":146},[129,2015,184],{"class":135},[129,2017,494],{"class":187},[129,2019,191],{"class":135},[129,2021,194],{"class":146},[129,2023,2024],{"class":131,"line":217},[129,2025,245],{"emptyLinePlaceholder":244},[129,2027,2028,2031,2033],{"class":131,"line":222},[129,2029,2030],{"class":146},"        m_age ",[129,2032,482],{"class":135},[129,2034,591],{"class":146},[129,2036,2037,2040,2042,2045,2048],{"class":131,"line":236},[129,2038,2039],{"class":146},"        m_height ",[129,2041,482],{"class":135},[129,2043,2044],{"class":135}," new",[129,2046,2047],{"class":135}," int",[129,2049,2050],{"class":146},"(height);\n",[129,2052,2053],{"class":131,"line":241},[129,2054,2009],{"class":146},[129,2056,2057],{"class":131,"line":248},[129,2058,200],{"class":146},[129,2060,2061],{"class":131,"line":254},[129,2062,2063],{"class":159},"    \u002F\u002F拷贝构造函数  \n",[129,2065,2066,2068,2070,2072,2074,2076,2078],{"class":131,"line":259},[129,2067,166],{"class":139},[129,2069,465],{"class":146},[129,2071,516],{"class":135},[129,2073,418],{"class":139},[129,2075,521],{"class":135},[129,2077,524],{"class":470},[129,2079,474],{"class":146},[129,2081,2082,2084,2086,2088,2090],{"class":131,"line":270},[129,2083,181],{"class":146},[129,2085,184],{"class":135},[129,2087,544],{"class":187},[129,2089,191],{"class":135},[129,2091,194],{"class":146},[129,2093,2094],{"class":131,"line":275},[129,2095,2096],{"class":159},"        \u002F\u002F如果不利用深拷贝在堆区创建新内存，会导致浅拷贝带来的重复释放堆区问题\n",[129,2098,2099,2101,2103],{"class":131,"line":281},[129,2100,2030],{"class":146},[129,2102,482],{"class":135},[129,2104,2105],{"class":146}," p.m_age;\n",[129,2107,2108,2110,2112,2114,2116,2118,2121],{"class":131,"line":287},[129,2109,2039],{"class":146},[129,2111,482],{"class":135},[129,2113,2044],{"class":135},[129,2115,2047],{"class":135},[129,2117,465],{"class":146},[129,2119,2120],{"class":135},"*",[129,2122,2123],{"class":146},"p.m_height);\n",[129,2125,2126],{"class":131,"line":292},[129,2127,2009],{"class":146},[129,2129,2130],{"class":131,"line":304},[129,2131,200],{"class":146},[129,2133,2134],{"class":131,"line":310},[129,2135,245],{"emptyLinePlaceholder":244},[129,2137,2138],{"class":131,"line":319},[129,2139,206],{"class":159},[129,2141,2142,2144],{"class":131,"line":324},[129,2143,212],{"class":139},[129,2145,301],{"class":146},[129,2147,2148,2150,2152,2154,2156],{"class":131,"line":329},[129,2149,181],{"class":146},[129,2151,184],{"class":135},[129,2153,571],{"class":187},[129,2155,191],{"class":135},[129,2157,194],{"class":146},[129,2159,2160,2163,2166,2169,2172],{"class":131,"line":342},[129,2161,2162],{"class":135},"        if",[129,2164,2165],{"class":146}," (m_height ",[129,2167,2168],{"class":135},"!=",[129,2170,2171],{"class":335}," NULL",[129,2173,2174],{"class":146},")\n",[129,2176,2177],{"class":131,"line":602},[129,2178,2179],{"class":146},"        {\n",[129,2181,2182,2185],{"class":131,"line":608},[129,2183,2184],{"class":135},"            delete",[129,2186,2187],{"class":146}," m_height;\n",[129,2189,2190],{"class":131,"line":614},[129,2191,2192],{"class":146},"        }\n",[129,2194,2195],{"class":131,"line":623},[129,2196,200],{"class":146},[129,2198,2199],{"class":131,"line":632},[129,2200,153],{"class":135},[129,2202,2203,2205],{"class":131,"line":637},[129,2204,588],{"class":135},[129,2206,2207],{"class":146}," m_age;\n",[129,2209,2210,2213],{"class":131,"line":642},[129,2211,2212],{"class":135},"    int*",[129,2214,2187],{"class":146},[129,2216,2217],{"class":131,"line":648},[129,2218,251],{"class":146},[129,2220,2221],{"class":131,"line":658},[129,2222,245],{"emptyLinePlaceholder":244},[129,2224,2225,2227,2229],{"class":131,"line":663},[129,2226,262],{"class":135},[129,2228,265],{"class":139},[129,2230,169],{"class":146},[129,2232,2233],{"class":131,"line":669},[129,2234,147],{"class":146},[129,2236,2237,2239,2241,2243,2245,2248,2251],{"class":131,"line":686},[129,2238,672],{"class":146},[129,2240,675],{"class":139},[129,2242,465],{"class":146},[129,2244,1719],{"class":335},[129,2246,2247],{"class":146},", ",[129,2249,2250],{"class":335},"180",[129,2252,683],{"class":146},[129,2254,2255],{"class":131,"line":692},[129,2256,245],{"emptyLinePlaceholder":244},[129,2258,2259,2261,2263],{"class":131,"line":698},[129,2260,672],{"class":146},[129,2262,1733],{"class":139},[129,2264,1736],{"class":146},[129,2266,2267],{"class":131,"line":703},[129,2268,245],{"emptyLinePlaceholder":244},[129,2270,2271,2273,2275,2278,2280,2283,2285,2288,2290,2292,2295,2297],{"class":131,"line":709},[129,2272,1282],{"class":146},[129,2274,184],{"class":135},[129,2276,2277],{"class":187}," \"p1的年龄： \"",[129,2279,191],{"class":135},[129,2281,2282],{"class":146}," p1.m_age ",[129,2284,184],{"class":135},[129,2286,2287],{"class":187}," \" 身高： \"",[129,2289,191],{"class":135},[129,2291,1292],{"class":135},[129,2293,2294],{"class":146},"p1.m_height ",[129,2296,184],{"class":135},[129,2298,194],{"class":146},[129,2300,2301],{"class":131,"line":726},[129,2302,245],{"emptyLinePlaceholder":244},[129,2304,2305,2307,2309,2312,2314,2317,2319,2321,2323,2325,2328,2330],{"class":131,"line":739},[129,2306,1282],{"class":146},[129,2308,184],{"class":135},[129,2310,2311],{"class":187}," \"p2的年龄： \"",[129,2313,191],{"class":135},[129,2315,2316],{"class":146}," p2.m_age ",[129,2318,184],{"class":135},[129,2320,2287],{"class":187},[129,2322,191],{"class":135},[129,2324,1292],{"class":135},[129,2326,2327],{"class":146},"p2.m_height ",[129,2329,184],{"class":135},[129,2331,194],{"class":146},[129,2333,2334],{"class":131,"line":745},[129,2335,284],{"class":146},[129,2337,2338],{"class":131,"line":750},[129,2339,245],{"emptyLinePlaceholder":244},[129,2341,2342,2344,2346],{"class":131,"line":756},[129,2343,295],{"class":135},[129,2345,298],{"class":139},[129,2347,301],{"class":146},[129,2349,2350],{"class":131,"line":773},[129,2351,245],{"emptyLinePlaceholder":244},[129,2353,2354,2356],{"class":131,"line":787},[129,2355,313],{"class":139},[129,2357,316],{"class":146},[129,2359,2360],{"class":131,"line":792},[129,2361,245],{"emptyLinePlaceholder":244},[129,2363,2364],{"class":131,"line":798},[129,2365,245],{"emptyLinePlaceholder":244},[129,2367,2368,2370,2372],{"class":131,"line":804},[129,2369,332],{"class":135},[129,2371,336],{"class":335},[129,2373,339],{"class":146},[129,2375,2376],{"class":131,"line":809},[129,2377,284],{"class":146},[29,2379,2380],{},[33,2381,349],{},[120,2383,2386],{"className":2384,"code":2385,"language":355,"meta":125},[353],"有参构造函数!\n拷贝构造函数!\np1的年龄： 18 身高： 180\np2的年龄： 18 身高： 180\n析构函数!\n析构函数!\n",[81,2387,2385],{"__ignoreMap":125},[1494,2389,2390],{},[29,2391,2392],{},"Summary: If a property is allocated on the heap, you must provide your own copy constructor to prevent issues caused by shallow copying.",[24,2394,2396],{"id":2395},"initialization-list","initialization list",[29,2398,2399],{},[33,2400,2401],{},"Function:",[29,2403,2404],{},"C++ provides initializer list syntax to initialize attributes.",[29,2406,2407,79,2410],{},[33,2408,2409],{},"Syntax:",[81,2411,2412],{},"构造函数()：属性1(值1),属性2（值2）... {}",[29,2414,2415],{},[33,2416,387],{},[120,2418,2420],{"className":122,"code":2419,"language":124,"meta":125,"style":125},"class Person {\npublic:\n\n    \u002F\u002F\u002F\u002F传统方式初始化\n    \u002F\u002FPerson(int a, int b, int c) {\n    \u002F\u002F  m_A = a;\n    \u002F\u002F  m_B = b;\n    \u002F\u002F  m_C = c;\n    \u002F\u002F}\n\n    \u002F\u002F初始化列表方式初始化\n    Person(int a, int b, int c) :m_A(a), m_B(b), m_C(c) {}\n    void PrintPerson() {\n        cout \u003C\u003C \"mA:\" \u003C\u003C m_A \u003C\u003C endl;\n        cout \u003C\u003C \"mB:\" \u003C\u003C m_B \u003C\u003C endl;\n        cout \u003C\u003C \"mC:\" \u003C\u003C m_C \u003C\u003C endl;\n    }\nprivate:\n    int m_A;\n    int m_B;\n    int m_C;\n};\n\nint main() {\n\n    Person p(1, 2, 3);\n    p.PrintPerson();\n\n\n    return 0;\n}\n",[81,2421,2422,2430,2434,2438,2443,2448,2453,2458,2463,2468,2472,2477,2522,2532,2550,2568,2586,2590,2595,2602,2609,2616,2620,2624,2632,2636,2659,2669,2673,2677,2685],{"__ignoreMap":125},[129,2423,2424,2426,2428],{"class":131,"line":132},[129,2425,136],{"class":135},[129,2427,418],{"class":139},[129,2429,421],{"class":146},[129,2431,2432],{"class":131,"line":143},[129,2433,153],{"class":135},[129,2435,2436],{"class":131,"line":150},[129,2437,245],{"emptyLinePlaceholder":244},[129,2439,2440],{"class":131,"line":156},[129,2441,2442],{"class":159},"    \u002F\u002F\u002F\u002F传统方式初始化\n",[129,2444,2445],{"class":131,"line":163},[129,2446,2447],{"class":159},"    \u002F\u002FPerson(int a, int b, int c) {\n",[129,2449,2450],{"class":131,"line":172},[129,2451,2452],{"class":159},"    \u002F\u002F  m_A = a;\n",[129,2454,2455],{"class":131,"line":178},[129,2456,2457],{"class":159},"    \u002F\u002F  m_B = b;\n",[129,2459,2460],{"class":131,"line":197},[129,2461,2462],{"class":159},"    \u002F\u002F  m_C = c;\n",[129,2464,2465],{"class":131,"line":203},[129,2466,2467],{"class":159},"    \u002F\u002F}\n",[129,2469,2470],{"class":131,"line":209},[129,2471,245],{"emptyLinePlaceholder":244},[129,2473,2474],{"class":131,"line":217},[129,2475,2476],{"class":159},"    \u002F\u002F初始化列表方式初始化\n",[129,2478,2479,2481,2483,2485,2487,2489,2491,2494,2496,2498,2501,2504,2507,2510,2513,2516,2519],{"class":131,"line":222},[129,2480,166],{"class":139},[129,2482,465],{"class":146},[129,2484,295],{"class":135},[129,2486,471],{"class":470},[129,2488,2247],{"class":146},[129,2490,295],{"class":135},[129,2492,2493],{"class":470}," b",[129,2495,2247],{"class":146},[129,2497,295],{"class":135},[129,2499,2500],{"class":470}," c",[129,2502,2503],{"class":146},") :",[129,2505,2506],{"class":139},"m_A",[129,2508,2509],{"class":146},"(a), ",[129,2511,2512],{"class":139},"m_B",[129,2514,2515],{"class":146},"(b), ",[129,2517,2518],{"class":139},"m_C",[129,2520,2521],{"class":146},"(c) {}\n",[129,2523,2524,2527,2530],{"class":131,"line":236},[129,2525,2526],{"class":135},"    void",[129,2528,2529],{"class":139}," PrintPerson",[129,2531,301],{"class":146},[129,2533,2534,2536,2538,2541,2543,2546,2548],{"class":131,"line":241},[129,2535,181],{"class":146},[129,2537,184],{"class":135},[129,2539,2540],{"class":187}," \"mA:\"",[129,2542,191],{"class":135},[129,2544,2545],{"class":146}," m_A ",[129,2547,184],{"class":135},[129,2549,194],{"class":146},[129,2551,2552,2554,2556,2559,2561,2564,2566],{"class":131,"line":248},[129,2553,181],{"class":146},[129,2555,184],{"class":135},[129,2557,2558],{"class":187}," \"mB:\"",[129,2560,191],{"class":135},[129,2562,2563],{"class":146}," m_B ",[129,2565,184],{"class":135},[129,2567,194],{"class":146},[129,2569,2570,2572,2574,2577,2579,2582,2584],{"class":131,"line":254},[129,2571,181],{"class":146},[129,2573,184],{"class":135},[129,2575,2576],{"class":187}," \"mC:\"",[129,2578,191],{"class":135},[129,2580,2581],{"class":146}," m_C ",[129,2583,184],{"class":135},[129,2585,194],{"class":146},[129,2587,2588],{"class":131,"line":259},[129,2589,200],{"class":146},[129,2591,2592],{"class":131,"line":270},[129,2593,2594],{"class":135},"private:\n",[129,2596,2597,2599],{"class":131,"line":275},[129,2598,588],{"class":135},[129,2600,2601],{"class":146}," m_A;\n",[129,2603,2604,2606],{"class":131,"line":281},[129,2605,588],{"class":135},[129,2607,2608],{"class":146}," m_B;\n",[129,2610,2611,2613],{"class":131,"line":287},[129,2612,588],{"class":135},[129,2614,2615],{"class":146}," m_C;\n",[129,2617,2618],{"class":131,"line":292},[129,2619,251],{"class":146},[129,2621,2622],{"class":131,"line":304},[129,2623,245],{"emptyLinePlaceholder":244},[129,2625,2626,2628,2630],{"class":131,"line":310},[129,2627,295],{"class":135},[129,2629,298],{"class":139},[129,2631,301],{"class":146},[129,2633,2634],{"class":131,"line":319},[129,2635,245],{"emptyLinePlaceholder":244},[129,2637,2638,2640,2642,2644,2647,2649,2652,2654,2657],{"class":131,"line":324},[129,2639,672],{"class":146},[129,2641,29],{"class":139},[129,2643,465],{"class":146},[129,2645,2646],{"class":335},"1",[129,2648,2247],{"class":146},[129,2650,2651],{"class":335},"2",[129,2653,2247],{"class":146},[129,2655,2656],{"class":335},"3",[129,2658,683],{"class":146},[129,2660,2661,2664,2667],{"class":131,"line":329},[129,2662,2663],{"class":146},"    p.",[129,2665,2666],{"class":139},"PrintPerson",[129,2668,316],{"class":146},[129,2670,2671],{"class":131,"line":342},[129,2672,245],{"emptyLinePlaceholder":244},[129,2674,2675],{"class":131,"line":602},[129,2676,245],{"emptyLinePlaceholder":244},[129,2678,2679,2681,2683],{"class":131,"line":608},[129,2680,332],{"class":135},[129,2682,336],{"class":335},[129,2684,339],{"class":146},[129,2686,2687],{"class":131,"line":614},[129,2688,284],{"class":146},[29,2690,2691],{},[33,2692,349],{},[120,2694,2697],{"className":2695,"code":2696,"language":355,"meta":125},[353],"mA:1\nmB:2\nmC:3\n",[81,2698,2696],{"__ignoreMap":125},[24,2700,2702],{"id":2701},"class-objects-as-class-members","Class objects as class members",[29,2704,2705],{},"A member of a C++ class can be an object of another class, and such a member is referred to as an object member.",[29,2707,2708],{},"For example:",[120,2710,2712],{"className":122,"code":2711,"language":124,"meta":125,"style":125},"class A {}\nclass B\n{\n    A a；\n}\n",[81,2713,2714,2724,2731,2735,2740],{"__ignoreMap":125},[129,2715,2716,2718,2721],{"class":131,"line":132},[129,2717,136],{"class":135},[129,2719,2720],{"class":139}," A",[129,2722,2723],{"class":146}," {}\n",[129,2725,2726,2728],{"class":131,"line":143},[129,2727,136],{"class":135},[129,2729,2730],{"class":139}," B\n",[129,2732,2733],{"class":131,"line":150},[129,2734,147],{"class":146},[129,2736,2737],{"class":131,"line":156},[129,2738,2739],{"class":146},"    A a；\n",[129,2741,2742],{"class":131,"line":163},[129,2743,284],{"class":146},[29,2745,2746,2748,2749,2752],{},[33,2747,349],{}," 此代码块不含 ",[81,2750,2751],{},"main"," 函数，是语法、接口或分文件示例，不能独立运行，因此没有终端输出。",[29,2754,2755],{},"Class B contains an object of type A as a member.",[29,2757,2758],{},"So when creating object B, what is the order of construction and destruction between A and B?",[29,2760,2761],{},[33,2762,387],{},[120,2764,2766],{"className":122,"code":2765,"language":124,"meta":125,"style":125},"class Phone\n{\npublic:\n    Phone(string name)\n    {\n        m_PhoneName = name;\n        cout \u003C\u003C \"Phone构造\" \u003C\u003C endl;\n    }\n\n    ~Phone()\n    {\n        cout \u003C\u003C \"Phone析构\" \u003C\u003C endl;\n    }\n\n    string m_PhoneName;\n\n};\n\nclass Person\n{\npublic:\n\n    \u002F\u002F初始化列表可以告诉编译器调用哪一个构造函数\n    Person(string name, string pName) :m_Name(name), m_Phone(pName)\n    {\n        cout \u003C\u003C \"Person构造\" \u003C\u003C endl;\n    }\n\n    ~Person()\n    {\n        cout \u003C\u003C \"Person析构\" \u003C\u003C endl;\n    }\n\n    void playGame()\n    {\n        cout \u003C\u003C m_Name \u003C\u003C \" 使用\" \u003C\u003C m_Phone.m_PhoneName \u003C\u003C \" 牌手机! \" \u003C\u003C endl;\n    }\n\n    string m_Name;\n    Phone m_Phone;\n\n};\nvoid test01()\n{\n    \u002F\u002F当类中成员是其他类对象时，我们称该成员为 对象成员\n    \u002F\u002F构造的顺序是 ：先调用对象成员的构造，再调用本类构造\n    \u002F\u002F析构顺序与构造相反\n    Person p(\"张三\" , \"苹果X\");\n    p.playGame();\n\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[81,2767,2768,2775,2779,2783,2798,2802,2812,2825,2829,2833,2840,2844,2857,2861,2865,2870,2874,2878,2882,2888,2892,2896,2900,2905,2936,2940,2953,2957,2961,2967,2971,2984,2988,2992,3001,3005,3033,3037,3041,3046,3051,3055,3059,3067,3071,3076,3081,3086,3105,3114,3118,3122,3126,3134,3138,3144,3148,3152,3160],{"__ignoreMap":125},[129,2769,2770,2772],{"class":131,"line":132},[129,2771,136],{"class":135},[129,2773,2774],{"class":139}," Phone\n",[129,2776,2777],{"class":131,"line":143},[129,2778,147],{"class":146},[129,2780,2781],{"class":131,"line":150},[129,2782,153],{"class":135},[129,2784,2785,2788,2790,2793,2796],{"class":131,"line":156},[129,2786,2787],{"class":139},"    Phone",[129,2789,465],{"class":146},[129,2791,2792],{"class":139},"string",[129,2794,2795],{"class":470}," name",[129,2797,2174],{"class":146},[129,2799,2800],{"class":131,"line":163},[129,2801,175],{"class":146},[129,2803,2804,2807,2809],{"class":131,"line":172},[129,2805,2806],{"class":146},"        m_PhoneName ",[129,2808,482],{"class":135},[129,2810,2811],{"class":146}," name;\n",[129,2813,2814,2816,2818,2821,2823],{"class":131,"line":178},[129,2815,181],{"class":146},[129,2817,184],{"class":135},[129,2819,2820],{"class":187}," \"Phone构造\"",[129,2822,191],{"class":135},[129,2824,194],{"class":146},[129,2826,2827],{"class":131,"line":197},[129,2828,200],{"class":146},[129,2830,2831],{"class":131,"line":203},[129,2832,245],{"emptyLinePlaceholder":244},[129,2834,2835,2838],{"class":131,"line":209},[129,2836,2837],{"class":139},"    ~Phone",[129,2839,169],{"class":146},[129,2841,2842],{"class":131,"line":217},[129,2843,175],{"class":146},[129,2845,2846,2848,2850,2853,2855],{"class":131,"line":222},[129,2847,181],{"class":146},[129,2849,184],{"class":135},[129,2851,2852],{"class":187}," \"Phone析构\"",[129,2854,191],{"class":135},[129,2856,194],{"class":146},[129,2858,2859],{"class":131,"line":236},[129,2860,200],{"class":146},[129,2862,2863],{"class":131,"line":241},[129,2864,245],{"emptyLinePlaceholder":244},[129,2866,2867],{"class":131,"line":248},[129,2868,2869],{"class":146},"    string m_PhoneName;\n",[129,2871,2872],{"class":131,"line":254},[129,2873,245],{"emptyLinePlaceholder":244},[129,2875,2876],{"class":131,"line":259},[129,2877,251],{"class":146},[129,2879,2880],{"class":131,"line":270},[129,2881,245],{"emptyLinePlaceholder":244},[129,2883,2884,2886],{"class":131,"line":275},[129,2885,136],{"class":135},[129,2887,140],{"class":139},[129,2889,2890],{"class":131,"line":281},[129,2891,147],{"class":146},[129,2893,2894],{"class":131,"line":287},[129,2895,153],{"class":135},[129,2897,2898],{"class":131,"line":292},[129,2899,245],{"emptyLinePlaceholder":244},[129,2901,2902],{"class":131,"line":304},[129,2903,2904],{"class":159},"    \u002F\u002F初始化列表可以告诉编译器调用哪一个构造函数\n",[129,2906,2907,2909,2911,2913,2915,2917,2919,2922,2924,2927,2930,2933],{"class":131,"line":310},[129,2908,166],{"class":139},[129,2910,465],{"class":146},[129,2912,2792],{"class":139},[129,2914,2795],{"class":470},[129,2916,2247],{"class":146},[129,2918,2792],{"class":139},[129,2920,2921],{"class":470}," pName",[129,2923,2503],{"class":146},[129,2925,2926],{"class":139},"m_Name",[129,2928,2929],{"class":146},"(name), ",[129,2931,2932],{"class":139},"m_Phone",[129,2934,2935],{"class":146},"(pName)\n",[129,2937,2938],{"class":131,"line":319},[129,2939,175],{"class":146},[129,2941,2942,2944,2946,2949,2951],{"class":131,"line":324},[129,2943,181],{"class":146},[129,2945,184],{"class":135},[129,2947,2948],{"class":187}," \"Person构造\"",[129,2950,191],{"class":135},[129,2952,194],{"class":146},[129,2954,2955],{"class":131,"line":329},[129,2956,200],{"class":146},[129,2958,2959],{"class":131,"line":342},[129,2960,245],{"emptyLinePlaceholder":244},[129,2962,2963,2965],{"class":131,"line":602},[129,2964,212],{"class":139},[129,2966,169],{"class":146},[129,2968,2969],{"class":131,"line":608},[129,2970,175],{"class":146},[129,2972,2973,2975,2977,2980,2982],{"class":131,"line":614},[129,2974,181],{"class":146},[129,2976,184],{"class":135},[129,2978,2979],{"class":187}," \"Person析构\"",[129,2981,191],{"class":135},[129,2983,194],{"class":146},[129,2985,2986],{"class":131,"line":623},[129,2987,200],{"class":146},[129,2989,2990],{"class":131,"line":632},[129,2991,245],{"emptyLinePlaceholder":244},[129,2993,2994,2996,2999],{"class":131,"line":637},[129,2995,2526],{"class":135},[129,2997,2998],{"class":139}," playGame",[129,3000,169],{"class":146},[129,3002,3003],{"class":131,"line":642},[129,3004,175],{"class":146},[129,3006,3007,3009,3011,3014,3016,3019,3021,3024,3026,3029,3031],{"class":131,"line":648},[129,3008,181],{"class":146},[129,3010,184],{"class":135},[129,3012,3013],{"class":146}," m_Name ",[129,3015,184],{"class":135},[129,3017,3018],{"class":187}," \" 使用\"",[129,3020,191],{"class":135},[129,3022,3023],{"class":146}," m_Phone.m_PhoneName ",[129,3025,184],{"class":135},[129,3027,3028],{"class":187}," \" 牌手机! \"",[129,3030,191],{"class":135},[129,3032,194],{"class":146},[129,3034,3035],{"class":131,"line":658},[129,3036,200],{"class":146},[129,3038,3039],{"class":131,"line":663},[129,3040,245],{"emptyLinePlaceholder":244},[129,3042,3043],{"class":131,"line":669},[129,3044,3045],{"class":146},"    string m_Name;\n",[129,3047,3048],{"class":131,"line":686},[129,3049,3050],{"class":146},"    Phone m_Phone;\n",[129,3052,3053],{"class":131,"line":692},[129,3054,245],{"emptyLinePlaceholder":244},[129,3056,3057],{"class":131,"line":698},[129,3058,251],{"class":146},[129,3060,3061,3063,3065],{"class":131,"line":703},[129,3062,262],{"class":135},[129,3064,265],{"class":139},[129,3066,169],{"class":146},[129,3068,3069],{"class":131,"line":709},[129,3070,147],{"class":146},[129,3072,3073],{"class":131,"line":726},[129,3074,3075],{"class":159},"    \u002F\u002F当类中成员是其他类对象时，我们称该成员为 对象成员\n",[129,3077,3078],{"class":131,"line":739},[129,3079,3080],{"class":159},"    \u002F\u002F构造的顺序是 ：先调用对象成员的构造，再调用本类构造\n",[129,3082,3083],{"class":131,"line":745},[129,3084,3085],{"class":159},"    \u002F\u002F析构顺序与构造相反\n",[129,3087,3088,3090,3092,3094,3097,3100,3103],{"class":131,"line":750},[129,3089,672],{"class":146},[129,3091,29],{"class":139},[129,3093,465],{"class":146},[129,3095,3096],{"class":187},"\"张三\"",[129,3098,3099],{"class":146}," , ",[129,3101,3102],{"class":187},"\"苹果X\"",[129,3104,683],{"class":146},[129,3106,3107,3109,3112],{"class":131,"line":756},[129,3108,2663],{"class":146},[129,3110,3111],{"class":139},"playGame",[129,3113,316],{"class":146},[129,3115,3116],{"class":131,"line":773},[129,3117,245],{"emptyLinePlaceholder":244},[129,3119,3120],{"class":131,"line":787},[129,3121,284],{"class":146},[129,3123,3124],{"class":131,"line":792},[129,3125,245],{"emptyLinePlaceholder":244},[129,3127,3128,3130,3132],{"class":131,"line":798},[129,3129,295],{"class":135},[129,3131,298],{"class":139},[129,3133,301],{"class":146},[129,3135,3136],{"class":131,"line":804},[129,3137,245],{"emptyLinePlaceholder":244},[129,3139,3140,3142],{"class":131,"line":809},[129,3141,313],{"class":139},[129,3143,316],{"class":146},[129,3145,3146],{"class":131,"line":814},[129,3147,245],{"emptyLinePlaceholder":244},[129,3149,3150],{"class":131,"line":823},[129,3151,245],{"emptyLinePlaceholder":244},[129,3153,3154,3156,3158],{"class":131,"line":828},[129,3155,332],{"class":135},[129,3157,336],{"class":335},[129,3159,339],{"class":146},[129,3161,3162],{"class":131,"line":835},[129,3163,284],{"class":146},[29,3165,3166],{},[33,3167,349],{},[120,3169,3172],{"className":3170,"code":3171,"language":355,"meta":125},[353],"Phone构造\nPerson构造\n张三 使用苹果X 牌手机!\nPerson析构\nPhone析构\n",[81,3173,3171],{"__ignoreMap":125},[24,3175,3177],{"id":3176},"static-member","static member",[29,3179,3180],{},"Static members are variables and functions that have the keyword \"static\" added before them, which are referred to as static members.",[29,3182,3183],{},"Static members are classified into:",[14,3185,3186,3200],{},[17,3187,3188,3189],{},"static member variable\n",[14,3190,3191,3194,3197],{},[17,3192,3193],{},"All objects share the same data.",[17,3195,3196],{},"Allocate memory at compile time.",[17,3198,3199],{},"Declared in class, initialized outside",[17,3201,3202,3203],{},"static member function\n",[14,3204,3205,3208],{},[17,3206,3207],{},"All objects share the same function.",[17,3209,3210],{},"Static member functions can only access static member variables.",[29,3212,3213,3216],{},[33,3214,3215],{},"Example 1:"," Static Member Variable",[120,3218,3220],{"className":122,"code":3219,"language":124,"meta":125,"style":125},"class Person\n{\n    \npublic:\n\n    static int m_A; \u002F\u002F静态成员变量\n\n    \u002F\u002F静态成员变量特点：\n    \u002F\u002F1 在编译阶段分配内存\n    \u002F\u002F2 类内声明，类外初始化\n    \u002F\u002F3 所有对象共享同一份数据\n\nprivate:\n    static int m_B; \u002F\u002F静态成员变量也是有访问权限的\n};\nint Person::m_A = 10;\nint Person::m_B = 10;\n\nvoid test01()\n{\n    \u002F\u002F静态成员变量两种访问方式\n\n    \u002F\u002F1、通过对象\n    Person p1;\n    p1.m_A = 100;\n    cout \u003C\u003C \"p1.m_A = \" \u003C\u003C p1.m_A \u003C\u003C endl;\n\n    Person p2;\n    p2.m_A = 200;\n    cout \u003C\u003C \"p1.m_A = \" \u003C\u003C p1.m_A \u003C\u003C endl; \u002F\u002F共享同一份数据\n    cout \u003C\u003C \"p2.m_A = \" \u003C\u003C p2.m_A \u003C\u003C endl;\n\n    \u002F\u002F2、通过类名\n    cout \u003C\u003C \"m_A = \" \u003C\u003C Person::m_A \u003C\u003C endl;\n\n    \u002F\u002Fcout \u003C\u003C \"m_B = \" \u003C\u003C Person::m_B \u003C\u003C endl; \u002F\u002F私有权限访问不到\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[81,3221,3222,3228,3232,3236,3240,3244,3257,3261,3266,3271,3276,3281,3285,3289,3301,3305,3320,3335,3339,3347,3351,3356,3360,3365,3369,3381,3399,3403,3408,3420,3440,3458,3462,3467,3486,3490,3498,3502,3506,3514,3518,3524,3528,3532,3540],{"__ignoreMap":125},[129,3223,3224,3226],{"class":131,"line":132},[129,3225,136],{"class":135},[129,3227,140],{"class":139},[129,3229,3230],{"class":131,"line":143},[129,3231,147],{"class":146},[129,3233,3234],{"class":131,"line":150},[129,3235,307],{"class":146},[129,3237,3238],{"class":131,"line":156},[129,3239,153],{"class":135},[129,3241,3242],{"class":131,"line":163},[129,3243,245],{"emptyLinePlaceholder":244},[129,3245,3246,3249,3251,3254],{"class":131,"line":172},[129,3247,3248],{"class":135},"    static",[129,3250,2047],{"class":135},[129,3252,3253],{"class":146}," m_A;",[129,3255,3256],{"class":159}," \u002F\u002F静态成员变量\n",[129,3258,3259],{"class":131,"line":178},[129,3260,245],{"emptyLinePlaceholder":244},[129,3262,3263],{"class":131,"line":197},[129,3264,3265],{"class":159},"    \u002F\u002F静态成员变量特点：\n",[129,3267,3268],{"class":131,"line":203},[129,3269,3270],{"class":159},"    \u002F\u002F1 在编译阶段分配内存\n",[129,3272,3273],{"class":131,"line":209},[129,3274,3275],{"class":159},"    \u002F\u002F2 类内声明，类外初始化\n",[129,3277,3278],{"class":131,"line":217},[129,3279,3280],{"class":159},"    \u002F\u002F3 所有对象共享同一份数据\n",[129,3282,3283],{"class":131,"line":222},[129,3284,245],{"emptyLinePlaceholder":244},[129,3286,3287],{"class":131,"line":236},[129,3288,2594],{"class":135},[129,3290,3291,3293,3295,3298],{"class":131,"line":241},[129,3292,3248],{"class":135},[129,3294,2047],{"class":135},[129,3296,3297],{"class":146}," m_B;",[129,3299,3300],{"class":159}," \u002F\u002F静态成员变量也是有访问权限的\n",[129,3302,3303],{"class":131,"line":248},[129,3304,251],{"class":146},[129,3306,3307,3309,3311,3314,3316,3318],{"class":131,"line":254},[129,3308,295],{"class":135},[129,3310,418],{"class":139},[129,3312,3313],{"class":146},"::m_A ",[129,3315,482],{"class":135},[129,3317,764],{"class":335},[129,3319,339],{"class":146},[129,3321,3322,3324,3326,3329,3331,3333],{"class":131,"line":259},[129,3323,295],{"class":135},[129,3325,418],{"class":139},[129,3327,3328],{"class":146},"::m_B ",[129,3330,482],{"class":135},[129,3332,764],{"class":335},[129,3334,339],{"class":146},[129,3336,3337],{"class":131,"line":270},[129,3338,245],{"emptyLinePlaceholder":244},[129,3340,3341,3343,3345],{"class":131,"line":275},[129,3342,262],{"class":135},[129,3344,265],{"class":139},[129,3346,169],{"class":146},[129,3348,3349],{"class":131,"line":281},[129,3350,147],{"class":146},[129,3352,3353],{"class":131,"line":287},[129,3354,3355],{"class":159},"    \u002F\u002F静态成员变量两种访问方式\n",[129,3357,3358],{"class":131,"line":292},[129,3359,245],{"emptyLinePlaceholder":244},[129,3361,3362],{"class":131,"line":304},[129,3363,3364],{"class":159},"    \u002F\u002F1、通过对象\n",[129,3366,3367],{"class":131,"line":310},[129,3368,1277],{"class":146},[129,3370,3371,3374,3376,3379],{"class":131,"line":319},[129,3372,3373],{"class":146},"    p1.m_A ",[129,3375,482],{"class":135},[129,3377,3378],{"class":335}," 100",[129,3380,339],{"class":146},[129,3382,3383,3385,3387,3390,3392,3395,3397],{"class":131,"line":324},[129,3384,1282],{"class":146},[129,3386,184],{"class":135},[129,3388,3389],{"class":187}," \"p1.m_A = \"",[129,3391,191],{"class":135},[129,3393,3394],{"class":146}," p1.m_A ",[129,3396,184],{"class":135},[129,3398,194],{"class":146},[129,3400,3401],{"class":131,"line":329},[129,3402,245],{"emptyLinePlaceholder":244},[129,3404,3405],{"class":131,"line":342},[129,3406,3407],{"class":146},"    Person p2;\n",[129,3409,3410,3413,3415,3418],{"class":131,"line":602},[129,3411,3412],{"class":146},"    p2.m_A ",[129,3414,482],{"class":135},[129,3416,3417],{"class":335}," 200",[129,3419,339],{"class":146},[129,3421,3422,3424,3426,3428,3430,3432,3434,3437],{"class":131,"line":608},[129,3423,1282],{"class":146},[129,3425,184],{"class":135},[129,3427,3389],{"class":187},[129,3429,191],{"class":135},[129,3431,3394],{"class":146},[129,3433,184],{"class":135},[129,3435,3436],{"class":146}," endl;",[129,3438,3439],{"class":159}," \u002F\u002F共享同一份数据\n",[129,3441,3442,3444,3446,3449,3451,3454,3456],{"class":131,"line":614},[129,3443,1282],{"class":146},[129,3445,184],{"class":135},[129,3447,3448],{"class":187}," \"p2.m_A = \"",[129,3450,191],{"class":135},[129,3452,3453],{"class":146}," p2.m_A ",[129,3455,184],{"class":135},[129,3457,194],{"class":146},[129,3459,3460],{"class":131,"line":623},[129,3461,245],{"emptyLinePlaceholder":244},[129,3463,3464],{"class":131,"line":632},[129,3465,3466],{"class":159},"    \u002F\u002F2、通过类名\n",[129,3468,3469,3471,3473,3476,3478,3480,3482,3484],{"class":131,"line":637},[129,3470,1282],{"class":146},[129,3472,184],{"class":135},[129,3474,3475],{"class":187}," \"m_A = \"",[129,3477,191],{"class":135},[129,3479,418],{"class":139},[129,3481,3313],{"class":146},[129,3483,184],{"class":135},[129,3485,194],{"class":146},[129,3487,3488],{"class":131,"line":642},[129,3489,245],{"emptyLinePlaceholder":244},[129,3491,3492,3495],{"class":131,"line":648},[129,3493,3494],{"class":159},"    \u002F\u002Fcout \u003C\u003C \"m_B = \" \u003C\u003C Person::m_B \u003C\u003C endl;",[129,3496,3497],{"class":159}," \u002F\u002F私有权限访问不到\n",[129,3499,3500],{"class":131,"line":658},[129,3501,284],{"class":146},[129,3503,3504],{"class":131,"line":663},[129,3505,245],{"emptyLinePlaceholder":244},[129,3507,3508,3510,3512],{"class":131,"line":669},[129,3509,295],{"class":135},[129,3511,298],{"class":139},[129,3513,301],{"class":146},[129,3515,3516],{"class":131,"line":686},[129,3517,245],{"emptyLinePlaceholder":244},[129,3519,3520,3522],{"class":131,"line":692},[129,3521,313],{"class":139},[129,3523,316],{"class":146},[129,3525,3526],{"class":131,"line":698},[129,3527,245],{"emptyLinePlaceholder":244},[129,3529,3530],{"class":131,"line":703},[129,3531,245],{"emptyLinePlaceholder":244},[129,3533,3534,3536,3538],{"class":131,"line":709},[129,3535,332],{"class":135},[129,3537,336],{"class":335},[129,3539,339],{"class":146},[129,3541,3542],{"class":131,"line":726},[129,3543,284],{"class":146},[29,3545,3546],{},[33,3547,349],{},[120,3549,3552],{"className":3550,"code":3551,"language":355,"meta":125},[353],"p1.m_A = 100\np1.m_A = 200\np2.m_A = 200\nm_A = 200\n",[81,3553,3551],{"__ignoreMap":125},[29,3555,3556,3559],{},[33,3557,3558],{},"Example 2:"," static member function",[120,3561,3563],{"className":122,"code":3562,"language":124,"meta":125,"style":125},"class Person\n{\n\npublic:\n\n    \u002F\u002F静态成员函数特点：\n    \u002F\u002F1 程序共享一个函数\n    \u002F\u002F2 静态成员函数只能访问静态成员变量\n    \n    static void func()\n    {\n        cout \u003C\u003C \"func调用\" \u003C\u003C endl;\n        m_A = 100;\n        \u002F\u002Fm_B = 100; \u002F\u002F错误，不可以访问非静态成员变量\n    }\n\n    static int m_A; \u002F\u002F静态成员变量\n    int m_B; \u002F\u002F \nprivate:\n\n    \u002F\u002F静态成员函数也是有访问权限的\n    static void func2()\n    {\n        cout \u003C\u003C \"func2调用\" \u003C\u003C endl;\n    }\n};\nint Person::m_A = 10;\n\nvoid test01()\n{\n    \u002F\u002F静态成员变量两种访问方式\n\n    \u002F\u002F1、通过对象\n    Person p1;\n    p1.func();\n\n    \u002F\u002F2、通过类名\n    Person::func();\n\n    \u002F\u002FPerson::func2(); \u002F\u002F私有权限访问不到\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[81,3564,3565,3571,3575,3579,3583,3587,3592,3597,3602,3606,3618,3622,3635,3646,3654,3658,3662,3672,3681,3685,3689,3694,3705,3709,3722,3726,3730,3744,3748,3756,3760,3764,3768,3772,3776,3786,3790,3794,3805,3809,3816,3820,3824,3832,3836,3842,3846,3850,3858],{"__ignoreMap":125},[129,3566,3567,3569],{"class":131,"line":132},[129,3568,136],{"class":135},[129,3570,140],{"class":139},[129,3572,3573],{"class":131,"line":143},[129,3574,147],{"class":146},[129,3576,3577],{"class":131,"line":150},[129,3578,245],{"emptyLinePlaceholder":244},[129,3580,3581],{"class":131,"line":156},[129,3582,153],{"class":135},[129,3584,3585],{"class":131,"line":163},[129,3586,245],{"emptyLinePlaceholder":244},[129,3588,3589],{"class":131,"line":172},[129,3590,3591],{"class":159},"    \u002F\u002F静态成员函数特点：\n",[129,3593,3594],{"class":131,"line":178},[129,3595,3596],{"class":159},"    \u002F\u002F1 程序共享一个函数\n",[129,3598,3599],{"class":131,"line":197},[129,3600,3601],{"class":159},"    \u002F\u002F2 静态成员函数只能访问静态成员变量\n",[129,3603,3604],{"class":131,"line":203},[129,3605,307],{"class":146},[129,3607,3608,3610,3613,3616],{"class":131,"line":209},[129,3609,3248],{"class":135},[129,3611,3612],{"class":135}," void",[129,3614,3615],{"class":139}," func",[129,3617,169],{"class":146},[129,3619,3620],{"class":131,"line":217},[129,3621,175],{"class":146},[129,3623,3624,3626,3628,3631,3633],{"class":131,"line":222},[129,3625,181],{"class":146},[129,3627,184],{"class":135},[129,3629,3630],{"class":187}," \"func调用\"",[129,3632,191],{"class":135},[129,3634,194],{"class":146},[129,3636,3637,3640,3642,3644],{"class":131,"line":236},[129,3638,3639],{"class":146},"        m_A ",[129,3641,482],{"class":135},[129,3643,3378],{"class":335},[129,3645,339],{"class":146},[129,3647,3648,3651],{"class":131,"line":241},[129,3649,3650],{"class":159},"        \u002F\u002Fm_B = 100;",[129,3652,3653],{"class":159}," \u002F\u002F错误，不可以访问非静态成员变量\n",[129,3655,3656],{"class":131,"line":248},[129,3657,200],{"class":146},[129,3659,3660],{"class":131,"line":254},[129,3661,245],{"emptyLinePlaceholder":244},[129,3663,3664,3666,3668,3670],{"class":131,"line":259},[129,3665,3248],{"class":135},[129,3667,2047],{"class":135},[129,3669,3253],{"class":146},[129,3671,3256],{"class":159},[129,3673,3674,3676,3678],{"class":131,"line":270},[129,3675,588],{"class":135},[129,3677,3297],{"class":146},[129,3679,3680],{"class":159}," \u002F\u002F \n",[129,3682,3683],{"class":131,"line":275},[129,3684,2594],{"class":135},[129,3686,3687],{"class":131,"line":281},[129,3688,245],{"emptyLinePlaceholder":244},[129,3690,3691],{"class":131,"line":287},[129,3692,3693],{"class":159},"    \u002F\u002F静态成员函数也是有访问权限的\n",[129,3695,3696,3698,3700,3703],{"class":131,"line":292},[129,3697,3248],{"class":135},[129,3699,3612],{"class":135},[129,3701,3702],{"class":139}," func2",[129,3704,169],{"class":146},[129,3706,3707],{"class":131,"line":304},[129,3708,175],{"class":146},[129,3710,3711,3713,3715,3718,3720],{"class":131,"line":310},[129,3712,181],{"class":146},[129,3714,184],{"class":135},[129,3716,3717],{"class":187}," \"func2调用\"",[129,3719,191],{"class":135},[129,3721,194],{"class":146},[129,3723,3724],{"class":131,"line":319},[129,3725,200],{"class":146},[129,3727,3728],{"class":131,"line":324},[129,3729,251],{"class":146},[129,3731,3732,3734,3736,3738,3740,3742],{"class":131,"line":329},[129,3733,295],{"class":135},[129,3735,418],{"class":139},[129,3737,3313],{"class":146},[129,3739,482],{"class":135},[129,3741,764],{"class":335},[129,3743,339],{"class":146},[129,3745,3746],{"class":131,"line":342},[129,3747,245],{"emptyLinePlaceholder":244},[129,3749,3750,3752,3754],{"class":131,"line":602},[129,3751,262],{"class":135},[129,3753,265],{"class":139},[129,3755,169],{"class":146},[129,3757,3758],{"class":131,"line":608},[129,3759,147],{"class":146},[129,3761,3762],{"class":131,"line":614},[129,3763,3355],{"class":159},[129,3765,3766],{"class":131,"line":623},[129,3767,245],{"emptyLinePlaceholder":244},[129,3769,3770],{"class":131,"line":632},[129,3771,3364],{"class":159},[129,3773,3774],{"class":131,"line":637},[129,3775,1277],{"class":146},[129,3777,3778,3781,3784],{"class":131,"line":642},[129,3779,3780],{"class":146},"    p1.",[129,3782,3783],{"class":139},"func",[129,3785,316],{"class":146},[129,3787,3788],{"class":131,"line":648},[129,3789,245],{"emptyLinePlaceholder":244},[129,3791,3792],{"class":131,"line":658},[129,3793,3466],{"class":159},[129,3795,3796,3798,3801,3803],{"class":131,"line":663},[129,3797,166],{"class":139},[129,3799,3800],{"class":146},"::",[129,3802,3783],{"class":139},[129,3804,316],{"class":146},[129,3806,3807],{"class":131,"line":669},[129,3808,245],{"emptyLinePlaceholder":244},[129,3810,3811,3814],{"class":131,"line":686},[129,3812,3813],{"class":159},"    \u002F\u002FPerson::func2();",[129,3815,3497],{"class":159},[129,3817,3818],{"class":131,"line":692},[129,3819,284],{"class":146},[129,3821,3822],{"class":131,"line":698},[129,3823,245],{"emptyLinePlaceholder":244},[129,3825,3826,3828,3830],{"class":131,"line":703},[129,3827,295],{"class":135},[129,3829,298],{"class":139},[129,3831,301],{"class":146},[129,3833,3834],{"class":131,"line":709},[129,3835,245],{"emptyLinePlaceholder":244},[129,3837,3838,3840],{"class":131,"line":726},[129,3839,313],{"class":139},[129,3841,316],{"class":146},[129,3843,3844],{"class":131,"line":739},[129,3845,245],{"emptyLinePlaceholder":244},[129,3847,3848],{"class":131,"line":745},[129,3849,245],{"emptyLinePlaceholder":244},[129,3851,3852,3854,3856],{"class":131,"line":750},[129,3853,332],{"class":135},[129,3855,336],{"class":335},[129,3857,339],{"class":146},[129,3859,3860],{"class":131,"line":756},[129,3861,284],{"class":146},[29,3863,3864],{},[33,3865,349],{},[120,3867,3870],{"className":3868,"code":3869,"language":355,"meta":125},[353],"func调用\nfunc调用\n",[81,3871,3869],{"__ignoreMap":125},[3873,3874,3875],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":125,"searchDepth":143,"depth":143,"links":3877},[3878],{"id":12,"depth":150,"text":5},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","1400-0200","2023-10-05","wiki\u002F2023-10-05-cplusplus-jiao-xue","en-us:2023-10-05-cplusplus-jiao-xue","\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理",false,null,"en-US","en-us",{},{"title":5,"description":125},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","NxjFoQUBAl_EFky4ULu2-Tqc6t_PJpIBSRx9yJglMN4",[3898,3904,3909,3914,3919,3924,3929,3934,3939,3944,3949,3954,3959,3964,3969,3970,3975,3980,3985,3990,3995,4000,4005,4010,4015,4020,4025,4030,4035,4040,4045,4050,4055,4060,4065,4070,4075,4080,4085,4090,4095,4100,4105,4110,4115,4120,4125,4130,4135,4140,4145,4150,4155,4160,4165,4170,4175,4180,4185,4190,4195,4200,4205,4210,4215,4220,4225,4230,4235,4240,4245,4250,4255,4260,4265,4270,4275,4280,4285,4290,4295,4300],{"path":3899,"stem":3900,"title":3901,"date":3881,"chapterOrder":3902,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++ Development Environment Setup and Testing","0100",0,{"path":3905,"stem":3906,"title":3907,"date":3881,"chapterOrder":3908,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++ Basics","0200",{"path":3910,"stem":3911,"title":3912,"date":3881,"chapterOrder":3913,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","Data Types and Data Storage","0300",{"path":3915,"stem":3916,"title":3917,"date":3881,"chapterOrder":3918,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","Input and Output","0400",{"path":3920,"stem":3921,"title":3922,"date":3881,"chapterOrder":3923,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","operator","0500",{"path":3925,"stem":3926,"title":3927,"date":3881,"chapterOrder":3928,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","program flow structure","0600",{"path":3930,"stem":3931,"title":3932,"date":3881,"chapterOrder":3933,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","array","0700",{"path":3935,"stem":3936,"title":3937,"date":3881,"chapterOrder":3938,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","Functions and Header Files","0800",{"path":3940,"stem":3941,"title":3942,"date":3881,"chapterOrder":3943,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","pointer","0900",{"path":3945,"stem":3946,"title":3947,"date":3881,"chapterOrder":3948,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","Structures and Unions","1000",{"path":3950,"stem":3951,"title":3952,"date":3881,"chapterOrder":3953,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","Memory Partitioning and Lifecycle","1100",{"path":3955,"stem":3956,"title":3957,"date":3881,"chapterOrder":3958,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","reference","1200",{"path":3960,"stem":3961,"title":3962,"date":3881,"chapterOrder":3963,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","Advanced Functions and Namespaces","1300",{"path":3965,"stem":3966,"title":3967,"date":3881,"chapterOrder":3968,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","encapsulation","1400-0100",{"path":3879,"stem":3895,"title":5,"date":3881,"chapterOrder":3880,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},{"path":3971,"stem":3972,"title":3973,"date":3881,"chapterOrder":3974,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","Object Model and the `this` Pointer","1400-0300",{"path":3976,"stem":3977,"title":3978,"date":3881,"chapterOrder":3979,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","Friends and operator overloading","1400-0400",{"path":3981,"stem":3982,"title":3983,"date":3881,"chapterOrder":3984,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","inheritance","1400-0500",{"path":3986,"stem":3987,"title":3988,"date":3881,"chapterOrder":3989,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","polymorphism","1400-0600",{"path":3991,"stem":3992,"title":3993,"date":3881,"chapterOrder":3994,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","Classes and Objects","1400",{"path":3996,"stem":3997,"title":3998,"date":3881,"chapterOrder":3999,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","File operations","1500",{"path":4001,"stem":4002,"title":4003,"date":3881,"chapterOrder":4004,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":4006,"stem":4007,"title":4008,"date":3881,"chapterOrder":4009,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","template","1700",{"path":4011,"stem":4012,"title":4013,"date":3881,"chapterOrder":4014,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","Introduction to STL","1800-0100",{"path":4016,"stem":4017,"title":4018,"date":3881,"chapterOrder":4019,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":4021,"stem":4022,"title":4023,"date":3881,"chapterOrder":4024,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string container","1800-0300",{"path":4026,"stem":4027,"title":4028,"date":3881,"chapterOrder":4029,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":4031,"stem":4032,"title":4033,"date":3881,"chapterOrder":4034,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":4036,"stem":4037,"title":4038,"date":3881,"chapterOrder":4039,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":4041,"stem":4042,"title":4043,"date":3881,"chapterOrder":4044,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue container","1800-0700",{"path":4046,"stem":4047,"title":4048,"date":3881,"chapterOrder":4049,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":4051,"stem":4052,"title":4053,"date":3881,"chapterOrder":4054,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":4056,"stem":4057,"title":4058,"date":3881,"chapterOrder":4059,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":4061,"stem":4062,"title":4063,"date":3881,"chapterOrder":4064,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","Function objects and predicates","1800-1100",{"path":4066,"stem":4067,"title":4068,"date":3881,"chapterOrder":4069,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","Common algorithms","1800-1200",{"path":4071,"stem":4072,"title":4073,"date":3881,"chapterOrder":4074,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","Level up your programming with STL.","1800",{"path":4076,"stem":4077,"title":4078,"date":3881,"chapterOrder":4079,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++ Type Casting","1900",{"path":4081,"stem":4082,"title":4083,"date":3881,"chapterOrder":4084,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto","2000-0100",{"path":4086,"stem":4087,"title":4088,"date":3881,"chapterOrder":4089,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":4091,"stem":4092,"title":4093,"date":3881,"chapterOrder":4094,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":4096,"stem":4097,"title":4098,"date":3881,"chapterOrder":4099,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":4101,"stem":4102,"title":4103,"date":3881,"chapterOrder":4104,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","range-based for loop","2000-0500",{"path":4106,"stem":4107,"title":4108,"date":3881,"chapterOrder":4109,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","structured binding","2000-0600",{"path":4111,"stem":4112,"title":4113,"date":3881,"chapterOrder":4114,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":4116,"stem":4117,"title":4118,"date":3881,"chapterOrder":4119,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":4121,"stem":4122,"title":4123,"date":3881,"chapterOrder":4124,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","Smart pointer","2000-0900",{"path":4126,"stem":4127,"title":4128,"date":3881,"chapterOrder":4129,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","Rvalue references and move semantics","2000-1000",{"path":4131,"stem":4132,"title":4133,"date":3881,"chapterOrder":4134,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda expression","2000-1100",{"path":4136,"stem":4137,"title":4138,"date":3881,"chapterOrder":4139,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":4141,"stem":4142,"title":4143,"date":3881,"chapterOrder":4144,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":4146,"stem":4147,"title":4148,"date":3881,"chapterOrder":4149,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":4151,"stem":4152,"title":4153,"date":3881,"chapterOrder":4154,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":4156,"stem":4157,"title":4158,"date":3881,"chapterOrder":4159,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":4161,"stem":4162,"title":4163,"date":3881,"chapterOrder":4164,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":4166,"stem":4167,"title":4168,"date":3881,"chapterOrder":4169,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":4171,"stem":4172,"title":4173,"date":3881,"chapterOrder":4174,"chapterDepth":143,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread and join","2000-1900-0100",{"path":4176,"stem":4177,"title":4178,"date":3881,"chapterOrder":4179,"chapterDepth":143,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 与 lock_guard","2000-1900-0200",{"path":4181,"stem":4182,"title":4183,"date":3881,"chapterOrder":4184,"chapterDepth":143,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":4186,"stem":4187,"title":4188,"date":3881,"chapterOrder":4189,"chapterDepth":143,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":4191,"stem":4192,"title":4193,"date":3881,"chapterOrder":4194,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","Concurrent programming","2000-1900",{"path":4196,"stem":4197,"title":4198,"date":3881,"chapterOrder":4199,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":4201,"stem":4202,"title":4203,"date":3881,"chapterOrder":4204,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","Modules Introduction","2000-2100",{"path":4206,"stem":4207,"title":4208,"date":3881,"chapterOrder":4209,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","Modern C++","2000",{"path":4211,"stem":4212,"title":4213,"date":3881,"chapterOrder":4214,"chapterDepth":143,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","Timers and Asynchronous I\u002FO","2100-0100-0100",{"path":4216,"stem":4217,"title":4218,"date":3881,"chapterOrder":4219,"chapterDepth":143,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio Basics","2100-0100-0200",{"path":4221,"stem":4222,"title":4223,"date":3881,"chapterOrder":4224,"chapterDepth":143,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","serial communication","2100-0100-0300",{"path":4226,"stem":4227,"title":4228,"date":3881,"chapterOrder":4229,"chapterDepth":143,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP communication","2100-0100-0400",{"path":4231,"stem":4232,"title":4233,"date":3881,"chapterOrder":4234,"chapterDepth":143,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP communication","2100-0100-0500",{"path":4236,"stem":4237,"title":4238,"date":3881,"chapterOrder":4239,"chapterDepth":143,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","Robot Engineering Approach and ROS2 Integration","2100-0100-0600",{"path":4241,"stem":4242,"title":4243,"date":3881,"chapterOrder":4244,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio asynchronous IO library","2100-0100",{"path":4246,"stem":4247,"title":4248,"date":3881,"chapterOrder":4249,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen linear algebra library","2100-0200",{"path":4251,"stem":4252,"title":4253,"date":3881,"chapterOrder":4254,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV Computer Vision Library","2100-0300",{"path":4256,"stem":4257,"title":4258,"date":3881,"chapterOrder":4259,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL Point Cloud Library","2100-0400",{"path":4261,"stem":4262,"title":4263,"date":3881,"chapterOrder":4264,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus Lie group and Lie algebra library","2100-0500",{"path":4266,"stem":4267,"title":4268,"date":3881,"chapterOrder":4269,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","Learning Common Libraries","2100",{"path":4271,"stem":4272,"title":4273,"date":3881,"chapterOrder":4274,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets and Build Installation","2200-0100",{"path":4276,"stem":4277,"title":4278,"date":3881,"chapterOrder":4279,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","Top-level CMake and Public Compilation Options","2200-0200",{"path":4281,"stem":4282,"title":4283,"date":3881,"chapterOrder":4284,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","Detailed CMake Explanation for src and lib Modules","2200-0300",{"path":4286,"stem":4287,"title":4288,"date":3881,"chapterOrder":4289,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","How to write third-party library dependencies","2200-0400",{"path":4291,"stem":4292,"title":4293,"date":3881,"chapterOrder":4294,"chapterDepth":132,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","Template Extensions and FAQ","2200-0500",{"path":4296,"stem":4297,"title":4298,"date":3881,"chapterOrder":4299,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":3888},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake Project Template","2200",{"path":3884,"stem":4301,"title":4302,"date":3881,"chapterOrder":3889,"chapterDepth":3903,"docKey":3883,"docRoot":3884,"docTitle":3885,"isWikiDoc":244,"isWikiIndex":244},"_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++ tutorial",{"variants":4304},[4305,4306,4309,4312,4315],{"path":3879,"localeSlug":3891,"i18nKey":3887},{"path":4307,"localeSlug":4308,"i18nKey":3887},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","zh-hant",{"path":4310,"localeSlug":4311,"i18nKey":3887},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","zh-hk",{"path":4313,"localeSlug":4314,"i18nKey":3887},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","zh-tw",{"path":4316,"localeSlug":4317,"i18nKey":3887},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","zh-cn",[3879,3894,4307,3894,4310,3894,4313,3894,4316,3894],1784646862929]