[{"data":1,"prerenderedAt":5034},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai":3,"wiki-doc-items-2023-10-05-cplusplus-jiao-xue":4474,"wiki:author-members":5022},{"id":4,"title":5,"authors":6,"body":8,"chapterDepth":66,"chapterOrder":4462,"date":4463,"description":58,"docKey":4464,"docRoot":4465,"docTitle":4466,"extension":4467,"isWikiDoc":158,"isWikiIndex":4468,"meta":4469,"navigation":158,"path":4470,"seo":4471,"stem":4472,"wikiDepth":66,"__hash__":4473},"wiki\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态.md","多态",[7],"董佳辉",{"type":9,"value":10,"toc":4459},"minimark",[11,14,18,25,28,38,41,49,52,526,531,539,542,545,553,556,561,564,567,570,573,576,587,592,1592,1596,1602,1608,1611,1614,1620,1626,1629,1635,1643,1647,1889,1893,1899,1902,1906,1909,1912,1919,1923,2541,2545,2551,2554,2557,2567,2570,2578,2581,2586,2589,2594,2597,2602,2607,2611,3104,3108,3114,3116,3119,3122,3125,3128,3132,3135,3138,3141,3144,3148,4446,4455],[12,13,5],"h3",{"id":5},[15,16,17],"h4",{"id":17},"多态的基本概念",[19,20,21],"p",{},[22,23,24],"strong",{},"多态是C++面向对象三大特性之一",[19,26,27],{},"多态分为两类",[29,30,31,35],"ul",{},[32,33,34],"li",{},"静态多态: 函数重载 和 运算符重载属于静态多态，复用函数名",[32,36,37],{},"动态多态: 派生类和虚函数实现运行时多态",[19,39,40],{},"静态多态和动态多态区别：",[29,42,43,46],{},[32,44,45],{},"静态多态的函数地址早绑定  -  编译阶段确定函数地址",[32,47,48],{},"动态多态的函数地址晚绑定  -  运行阶段确定函数地址",[19,50,51],{},"下面通过案例进行讲解多态",[53,54,59],"pre",{"className":55,"code":56,"language":57,"meta":58,"style":58},"language-cpp shiki shiki-themes github-light github-dark","class Animal\n{\npublic:\n    \u002F\u002FSpeak函数就是虚函数\n    \u002F\u002F函数前面加上virtual关键字，变成虚函数，那么编译器在编译的时候就不能确定函数调用了。\n    virtual void speak()\n    {\n        cout \u003C\u003C \"动物在说话\" \u003C\u003C endl;\n    }\n};\n\nclass Cat :public Animal\n{\npublic:\n    void speak()\n    {\n        cout \u003C\u003C \"小猫在说话\" \u003C\u003C endl;\n    }\n};\n\nclass Dog :public Animal\n{\npublic:\n\n    void speak()\n    {\n        cout \u003C\u003C \"小狗在说话\" \u003C\u003C endl;\n    }\n\n};\n\u002F\u002F我们希望传入什么对象，那么就调用什么对象的函数\n\u002F\u002F如果函数地址在编译阶段就能确定，那么静态联编\n\u002F\u002F如果函数地址在运行阶段才能确定，就是动态联编\n\nvoid DoSpeak(Animal & animal)\n{\n    animal.speak();\n}\n\u002F\u002F\n\u002F\u002F多态满足条件： \n\u002F\u002F1、有继承关系\n\u002F\u002F2、子类重写父类中的虚函数\n\u002F\u002F多态使用：\n\u002F\u002F父类指针或引用指向子类对象\n\nvoid test01()\n{\n    Cat cat;\n    DoSpeak(cat);\n\n    Dog dog;\n    DoSpeak(dog);\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n","cpp","",[60,61,62,75,82,88,95,101,116,122,141,147,153,160,176,181,186,196,201,215,220,225,230,244,249,254,259,268,273,287,292,297,302,308,314,320,325,350,355,367,373,379,385,391,397,403,409,414,424,429,435,444,449,455,463,468,473,485,490,498,503,508,521],"code",{"__ignoreMap":58},[63,64,67,71],"span",{"class":65,"line":66},"line",1,[63,68,70],{"class":69},"szBVR","class",[63,72,74],{"class":73},"sScJk"," Animal\n",[63,76,78],{"class":65,"line":77},2,[63,79,81],{"class":80},"sVt8B","{\n",[63,83,85],{"class":65,"line":84},3,[63,86,87],{"class":69},"public:\n",[63,89,91],{"class":65,"line":90},4,[63,92,94],{"class":93},"sJ8bj","    \u002F\u002FSpeak函数就是虚函数\n",[63,96,98],{"class":65,"line":97},5,[63,99,100],{"class":93},"    \u002F\u002F函数前面加上virtual关键字，变成虚函数，那么编译器在编译的时候就不能确定函数调用了。\n",[63,102,104,107,110,113],{"class":65,"line":103},6,[63,105,106],{"class":69},"    virtual",[63,108,109],{"class":69}," void",[63,111,112],{"class":73}," speak",[63,114,115],{"class":80},"()\n",[63,117,119],{"class":65,"line":118},7,[63,120,121],{"class":80},"    {\n",[63,123,125,128,131,135,138],{"class":65,"line":124},8,[63,126,127],{"class":80},"        cout ",[63,129,130],{"class":69},"\u003C\u003C",[63,132,134],{"class":133},"sZZnC"," \"动物在说话\"",[63,136,137],{"class":69}," \u003C\u003C",[63,139,140],{"class":80}," endl;\n",[63,142,144],{"class":65,"line":143},9,[63,145,146],{"class":80},"    }\n",[63,148,150],{"class":65,"line":149},10,[63,151,152],{"class":80},"};\n",[63,154,156],{"class":65,"line":155},11,[63,157,159],{"emptyLinePlaceholder":158},true,"\n",[63,161,163,165,168,171,174],{"class":65,"line":162},12,[63,164,70],{"class":69},[63,166,167],{"class":73}," Cat",[63,169,170],{"class":80}," :",[63,172,173],{"class":69},"public",[63,175,74],{"class":73},[63,177,179],{"class":65,"line":178},13,[63,180,81],{"class":80},[63,182,184],{"class":65,"line":183},14,[63,185,87],{"class":69},[63,187,189,192,194],{"class":65,"line":188},15,[63,190,191],{"class":69},"    void",[63,193,112],{"class":73},[63,195,115],{"class":80},[63,197,199],{"class":65,"line":198},16,[63,200,121],{"class":80},[63,202,204,206,208,211,213],{"class":65,"line":203},17,[63,205,127],{"class":80},[63,207,130],{"class":69},[63,209,210],{"class":133}," \"小猫在说话\"",[63,212,137],{"class":69},[63,214,140],{"class":80},[63,216,218],{"class":65,"line":217},18,[63,219,146],{"class":80},[63,221,223],{"class":65,"line":222},19,[63,224,152],{"class":80},[63,226,228],{"class":65,"line":227},20,[63,229,159],{"emptyLinePlaceholder":158},[63,231,233,235,238,240,242],{"class":65,"line":232},21,[63,234,70],{"class":69},[63,236,237],{"class":73}," Dog",[63,239,170],{"class":80},[63,241,173],{"class":69},[63,243,74],{"class":73},[63,245,247],{"class":65,"line":246},22,[63,248,81],{"class":80},[63,250,252],{"class":65,"line":251},23,[63,253,87],{"class":69},[63,255,257],{"class":65,"line":256},24,[63,258,159],{"emptyLinePlaceholder":158},[63,260,262,264,266],{"class":65,"line":261},25,[63,263,191],{"class":69},[63,265,112],{"class":73},[63,267,115],{"class":80},[63,269,271],{"class":65,"line":270},26,[63,272,121],{"class":80},[63,274,276,278,280,283,285],{"class":65,"line":275},27,[63,277,127],{"class":80},[63,279,130],{"class":69},[63,281,282],{"class":133}," \"小狗在说话\"",[63,284,137],{"class":69},[63,286,140],{"class":80},[63,288,290],{"class":65,"line":289},28,[63,291,146],{"class":80},[63,293,295],{"class":65,"line":294},29,[63,296,159],{"emptyLinePlaceholder":158},[63,298,300],{"class":65,"line":299},30,[63,301,152],{"class":80},[63,303,305],{"class":65,"line":304},31,[63,306,307],{"class":93},"\u002F\u002F我们希望传入什么对象，那么就调用什么对象的函数\n",[63,309,311],{"class":65,"line":310},32,[63,312,313],{"class":93},"\u002F\u002F如果函数地址在编译阶段就能确定，那么静态联编\n",[63,315,317],{"class":65,"line":316},33,[63,318,319],{"class":93},"\u002F\u002F如果函数地址在运行阶段才能确定，就是动态联编\n",[63,321,323],{"class":65,"line":322},34,[63,324,159],{"emptyLinePlaceholder":158},[63,326,328,331,334,337,340,343,347],{"class":65,"line":327},35,[63,329,330],{"class":69},"void",[63,332,333],{"class":73}," DoSpeak",[63,335,336],{"class":80},"(",[63,338,339],{"class":73},"Animal",[63,341,342],{"class":69}," &",[63,344,346],{"class":345},"s4XuR"," animal",[63,348,349],{"class":80},")\n",[63,351,353],{"class":65,"line":352},36,[63,354,81],{"class":80},[63,356,358,361,364],{"class":65,"line":357},37,[63,359,360],{"class":80},"    animal.",[63,362,363],{"class":73},"speak",[63,365,366],{"class":80},"();\n",[63,368,370],{"class":65,"line":369},38,[63,371,372],{"class":80},"}\n",[63,374,376],{"class":65,"line":375},39,[63,377,378],{"class":93},"\u002F\u002F\n",[63,380,382],{"class":65,"line":381},40,[63,383,384],{"class":93},"\u002F\u002F多态满足条件： \n",[63,386,388],{"class":65,"line":387},41,[63,389,390],{"class":93},"\u002F\u002F1、有继承关系\n",[63,392,394],{"class":65,"line":393},42,[63,395,396],{"class":93},"\u002F\u002F2、子类重写父类中的虚函数\n",[63,398,400],{"class":65,"line":399},43,[63,401,402],{"class":93},"\u002F\u002F多态使用：\n",[63,404,406],{"class":65,"line":405},44,[63,407,408],{"class":93},"\u002F\u002F父类指针或引用指向子类对象\n",[63,410,412],{"class":65,"line":411},45,[63,413,159],{"emptyLinePlaceholder":158},[63,415,417,419,422],{"class":65,"line":416},46,[63,418,330],{"class":69},[63,420,421],{"class":73}," test01",[63,423,115],{"class":80},[63,425,427],{"class":65,"line":426},47,[63,428,81],{"class":80},[63,430,432],{"class":65,"line":431},48,[63,433,434],{"class":80},"    Cat cat;\n",[63,436,438,441],{"class":65,"line":437},49,[63,439,440],{"class":73},"    DoSpeak",[63,442,443],{"class":80},"(cat);\n",[63,445,447],{"class":65,"line":446},50,[63,448,159],{"emptyLinePlaceholder":158},[63,450,452],{"class":65,"line":451},51,[63,453,454],{"class":80},"    Dog dog;\n",[63,456,458,460],{"class":65,"line":457},52,[63,459,440],{"class":73},[63,461,462],{"class":80},"(dog);\n",[63,464,466],{"class":65,"line":465},53,[63,467,372],{"class":80},[63,469,471],{"class":65,"line":470},54,[63,472,159],{"emptyLinePlaceholder":158},[63,474,476,479,482],{"class":65,"line":475},55,[63,477,478],{"class":69},"int",[63,480,481],{"class":73}," main",[63,483,484],{"class":80},"() {\n",[63,486,488],{"class":65,"line":487},56,[63,489,159],{"emptyLinePlaceholder":158},[63,491,493,496],{"class":65,"line":492},57,[63,494,495],{"class":73},"    test01",[63,497,366],{"class":80},[63,499,501],{"class":65,"line":500},58,[63,502,159],{"emptyLinePlaceholder":158},[63,504,506],{"class":65,"line":505},59,[63,507,159],{"emptyLinePlaceholder":158},[63,509,511,514,518],{"class":65,"line":510},60,[63,512,513],{"class":69},"    return",[63,515,517],{"class":516},"sj4cs"," 0",[63,519,520],{"class":80},";\n",[63,522,524],{"class":65,"line":523},61,[63,525,372],{"class":80},[19,527,528],{},[22,529,530],{},"运行结果：",[53,532,537],{"className":533,"code":535,"language":536,"meta":58},[534],"language-text","小猫在说话\n小狗在说话\n","text",[60,538,535],{"__ignoreMap":58},[19,540,541],{},"总结：",[19,543,544],{},"多态满足条件",[29,546,547,550],{},[32,548,549],{},"有继承关系",[32,551,552],{},"子类重写父类中的虚函数",[19,554,555],{},"多态使用条件",[29,557,558],{},[32,559,560],{},"父类指针或引用指向子类对象",[19,562,563],{},"重写：函数返回值类型  函数名 参数列表 完全一致称为重写",[15,565,566],{"id":566},"多态案例一-计算器类",[19,568,569],{},"案例描述：",[19,571,572],{},"分别利用普通写法和多态技术，设计实现两个操作数进行运算的计算器类",[19,574,575],{},"多态的优点：",[29,577,578,581,584],{},[32,579,580],{},"代码组织结构清晰",[32,582,583],{},"可读性强",[32,585,586],{},"利于前期和后期的扩展以及维护",[19,588,589],{},[22,590,591],{},"示例：",[53,593,595],{"className":55,"code":594,"language":57,"meta":58,"style":58},"\u002F\u002F普通实现\nclass Calculator {\npublic:\n    int getResult(string oper)\n    {\n        if (oper == \"+\") {\n            return m_Num1 + m_Num2;\n        }\n        else if (oper == \"-\") {\n            return m_Num1 - m_Num2;\n        }\n        else if (oper == \"*\") {\n            return m_Num1 * m_Num2;\n        }\n        \u002F\u002F如果要提供新的运算，需要修改源码\n    }\npublic:\n    int m_Num1;\n    int m_Num2;\n};\n\nvoid test01()\n{\n    \u002F\u002F普通实现测试\n    Calculator c;\n    c.m_Num1 = 10;\n    c.m_Num2 = 10;\n    cout \u003C\u003C c.m_Num1 \u003C\u003C \" + \" \u003C\u003C c.m_Num2 \u003C\u003C \" = \" \u003C\u003C c.getResult(\"+\") \u003C\u003C endl;\n\n    cout \u003C\u003C c.m_Num1 \u003C\u003C \" - \" \u003C\u003C c.m_Num2 \u003C\u003C \" = \" \u003C\u003C c.getResult(\"-\") \u003C\u003C endl;\n\n    cout \u003C\u003C c.m_Num1 \u003C\u003C \" * \" \u003C\u003C c.m_Num2 \u003C\u003C \" = \" \u003C\u003C c.getResult(\"*\") \u003C\u003C endl;\n}\n\n\u002F\u002F多态实现\n\u002F\u002F抽象计算器类\n\u002F\u002F多态优点：代码组织结构清晰，可读性强，利于前期和后期的扩展以及维护\nclass AbstractCalculator\n{\npublic :\n\n    virtual int getResult()\n    {\n        return 0;\n    }\n\n    int m_Num1;\n    int m_Num2;\n};\n\n\u002F\u002F加法计算器\nclass AddCalculator :public AbstractCalculator\n{\npublic:\n    int getResult()\n    {\n        return m_Num1 + m_Num2;\n    }\n};\n\n\u002F\u002F减法计算器\nclass SubCalculator :public AbstractCalculator\n{\npublic:\n    int getResult()\n    {\n        return m_Num1 - m_Num2;\n    }\n};\n\n\u002F\u002F乘法计算器\nclass MulCalculator :public AbstractCalculator\n{\npublic:\n    int getResult()\n    {\n        return m_Num1 * m_Num2;\n    }\n};\n\nvoid test02()\n{\n    \u002F\u002F创建加法计算器\n    AbstractCalculator *abc = new AddCalculator;\n    abc->m_Num1 = 10;\n    abc->m_Num2 = 10;\n    cout \u003C\u003C abc->m_Num1 \u003C\u003C \" + \" \u003C\u003C abc->m_Num2 \u003C\u003C \" = \" \u003C\u003C abc->getResult() \u003C\u003C endl;\n    delete abc;  \u002F\u002F用完了记得销毁\n\n    \u002F\u002F创建减法计算器\n    abc = new SubCalculator;\n    abc->m_Num1 = 10;\n    abc->m_Num2 = 10;\n    cout \u003C\u003C abc->m_Num1 \u003C\u003C \" - \" \u003C\u003C abc->m_Num2 \u003C\u003C \" = \" \u003C\u003C abc->getResult() \u003C\u003C endl;\n    delete abc;  \n\n    \u002F\u002F创建乘法计算器\n    abc = new MulCalculator;\n    abc->m_Num1 = 10;\n    abc->m_Num2 = 10;\n    cout \u003C\u003C abc->m_Num1 \u003C\u003C \" * \" \u003C\u003C abc->m_Num2 \u003C\u003C \" = \" \u003C\u003C abc->getResult() \u003C\u003C endl;\n    delete abc;\n}\n\nint main() {\n\n    \u002F\u002Ftest01();\n\n    test02();\n\n\n    return 0;\n}\n",[60,596,597,602,612,616,634,638,655,669,674,691,702,706,721,732,736,741,745,749,756,762,766,770,778,782,787,792,805,816,861,865,903,907,945,949,953,958,963,968,975,979,984,988,999,1003,1012,1016,1020,1026,1032,1036,1040,1045,1058,1062,1066,1074,1078,1088,1092,1096,1100,1105,1119,1124,1129,1138,1143,1154,1159,1164,1169,1175,1189,1194,1199,1208,1213,1224,1229,1234,1239,1249,1254,1260,1279,1291,1303,1340,1352,1357,1363,1376,1387,1398,1431,1439,1444,1450,1462,1473,1484,1517,1525,1530,1535,1544,1549,1555,1560,1568,1573,1578,1587],{"__ignoreMap":58},[63,598,599],{"class":65,"line":66},[63,600,601],{"class":93},"\u002F\u002F普通实现\n",[63,603,604,606,609],{"class":65,"line":77},[63,605,70],{"class":69},[63,607,608],{"class":73}," Calculator",[63,610,611],{"class":80}," {\n",[63,613,614],{"class":65,"line":84},[63,615,87],{"class":69},[63,617,618,621,624,626,629,632],{"class":65,"line":90},[63,619,620],{"class":69},"    int",[63,622,623],{"class":73}," getResult",[63,625,336],{"class":80},[63,627,628],{"class":73},"string",[63,630,631],{"class":345}," oper",[63,633,349],{"class":80},[63,635,636],{"class":65,"line":97},[63,637,121],{"class":80},[63,639,640,643,646,649,652],{"class":65,"line":103},[63,641,642],{"class":69},"        if",[63,644,645],{"class":80}," (oper ",[63,647,648],{"class":69},"==",[63,650,651],{"class":133}," \"+\"",[63,653,654],{"class":80},") {\n",[63,656,657,660,663,666],{"class":65,"line":118},[63,658,659],{"class":69},"            return",[63,661,662],{"class":80}," m_Num1 ",[63,664,665],{"class":69},"+",[63,667,668],{"class":80}," m_Num2;\n",[63,670,671],{"class":65,"line":124},[63,672,673],{"class":80},"        }\n",[63,675,676,679,682,684,686,689],{"class":65,"line":143},[63,677,678],{"class":69},"        else",[63,680,681],{"class":69}," if",[63,683,645],{"class":80},[63,685,648],{"class":69},[63,687,688],{"class":133}," \"-\"",[63,690,654],{"class":80},[63,692,693,695,697,700],{"class":65,"line":149},[63,694,659],{"class":69},[63,696,662],{"class":80},[63,698,699],{"class":69},"-",[63,701,668],{"class":80},[63,703,704],{"class":65,"line":155},[63,705,673],{"class":80},[63,707,708,710,712,714,716,719],{"class":65,"line":162},[63,709,678],{"class":69},[63,711,681],{"class":69},[63,713,645],{"class":80},[63,715,648],{"class":69},[63,717,718],{"class":133}," \"*\"",[63,720,654],{"class":80},[63,722,723,725,727,730],{"class":65,"line":178},[63,724,659],{"class":69},[63,726,662],{"class":80},[63,728,729],{"class":69},"*",[63,731,668],{"class":80},[63,733,734],{"class":65,"line":183},[63,735,673],{"class":80},[63,737,738],{"class":65,"line":188},[63,739,740],{"class":93},"        \u002F\u002F如果要提供新的运算，需要修改源码\n",[63,742,743],{"class":65,"line":198},[63,744,146],{"class":80},[63,746,747],{"class":65,"line":203},[63,748,87],{"class":69},[63,750,751,753],{"class":65,"line":217},[63,752,620],{"class":69},[63,754,755],{"class":80}," m_Num1;\n",[63,757,758,760],{"class":65,"line":222},[63,759,620],{"class":69},[63,761,668],{"class":80},[63,763,764],{"class":65,"line":227},[63,765,152],{"class":80},[63,767,768],{"class":65,"line":232},[63,769,159],{"emptyLinePlaceholder":158},[63,771,772,774,776],{"class":65,"line":246},[63,773,330],{"class":69},[63,775,421],{"class":73},[63,777,115],{"class":80},[63,779,780],{"class":65,"line":251},[63,781,81],{"class":80},[63,783,784],{"class":65,"line":256},[63,785,786],{"class":93},"    \u002F\u002F普通实现测试\n",[63,788,789],{"class":65,"line":261},[63,790,791],{"class":80},"    Calculator c;\n",[63,793,794,797,800,803],{"class":65,"line":270},[63,795,796],{"class":80},"    c.m_Num1 ",[63,798,799],{"class":69},"=",[63,801,802],{"class":516}," 10",[63,804,520],{"class":80},[63,806,807,810,812,814],{"class":65,"line":275},[63,808,809],{"class":80},"    c.m_Num2 ",[63,811,799],{"class":69},[63,813,802],{"class":516},[63,815,520],{"class":80},[63,817,818,821,823,826,828,831,833,836,838,841,843,846,849,851,854,857,859],{"class":65,"line":289},[63,819,820],{"class":80},"    cout ",[63,822,130],{"class":69},[63,824,825],{"class":80}," c.m_Num1 ",[63,827,130],{"class":69},[63,829,830],{"class":133}," \" + \"",[63,832,137],{"class":69},[63,834,835],{"class":80}," c.m_Num2 ",[63,837,130],{"class":69},[63,839,840],{"class":133}," \" = \"",[63,842,137],{"class":69},[63,844,845],{"class":80}," c.",[63,847,848],{"class":73},"getResult",[63,850,336],{"class":80},[63,852,853],{"class":133},"\"+\"",[63,855,856],{"class":80},") ",[63,858,130],{"class":69},[63,860,140],{"class":80},[63,862,863],{"class":65,"line":294},[63,864,159],{"emptyLinePlaceholder":158},[63,866,867,869,871,873,875,878,880,882,884,886,888,890,892,894,897,899,901],{"class":65,"line":299},[63,868,820],{"class":80},[63,870,130],{"class":69},[63,872,825],{"class":80},[63,874,130],{"class":69},[63,876,877],{"class":133}," \" - \"",[63,879,137],{"class":69},[63,881,835],{"class":80},[63,883,130],{"class":69},[63,885,840],{"class":133},[63,887,137],{"class":69},[63,889,845],{"class":80},[63,891,848],{"class":73},[63,893,336],{"class":80},[63,895,896],{"class":133},"\"-\"",[63,898,856],{"class":80},[63,900,130],{"class":69},[63,902,140],{"class":80},[63,904,905],{"class":65,"line":304},[63,906,159],{"emptyLinePlaceholder":158},[63,908,909,911,913,915,917,920,922,924,926,928,930,932,934,936,939,941,943],{"class":65,"line":310},[63,910,820],{"class":80},[63,912,130],{"class":69},[63,914,825],{"class":80},[63,916,130],{"class":69},[63,918,919],{"class":133}," \" * \"",[63,921,137],{"class":69},[63,923,835],{"class":80},[63,925,130],{"class":69},[63,927,840],{"class":133},[63,929,137],{"class":69},[63,931,845],{"class":80},[63,933,848],{"class":73},[63,935,336],{"class":80},[63,937,938],{"class":133},"\"*\"",[63,940,856],{"class":80},[63,942,130],{"class":69},[63,944,140],{"class":80},[63,946,947],{"class":65,"line":316},[63,948,372],{"class":80},[63,950,951],{"class":65,"line":322},[63,952,159],{"emptyLinePlaceholder":158},[63,954,955],{"class":65,"line":327},[63,956,957],{"class":93},"\u002F\u002F多态实现\n",[63,959,960],{"class":65,"line":352},[63,961,962],{"class":93},"\u002F\u002F抽象计算器类\n",[63,964,965],{"class":65,"line":357},[63,966,967],{"class":93},"\u002F\u002F多态优点：代码组织结构清晰，可读性强，利于前期和后期的扩展以及维护\n",[63,969,970,972],{"class":65,"line":369},[63,971,70],{"class":69},[63,973,974],{"class":73}," AbstractCalculator\n",[63,976,977],{"class":65,"line":375},[63,978,81],{"class":80},[63,980,981],{"class":65,"line":381},[63,982,983],{"class":69},"public :\n",[63,985,986],{"class":65,"line":387},[63,987,159],{"emptyLinePlaceholder":158},[63,989,990,992,995,997],{"class":65,"line":393},[63,991,106],{"class":69},[63,993,994],{"class":69}," int",[63,996,623],{"class":73},[63,998,115],{"class":80},[63,1000,1001],{"class":65,"line":399},[63,1002,121],{"class":80},[63,1004,1005,1008,1010],{"class":65,"line":405},[63,1006,1007],{"class":69},"        return",[63,1009,517],{"class":516},[63,1011,520],{"class":80},[63,1013,1014],{"class":65,"line":411},[63,1015,146],{"class":80},[63,1017,1018],{"class":65,"line":416},[63,1019,159],{"emptyLinePlaceholder":158},[63,1021,1022,1024],{"class":65,"line":426},[63,1023,620],{"class":69},[63,1025,755],{"class":80},[63,1027,1028,1030],{"class":65,"line":431},[63,1029,620],{"class":69},[63,1031,668],{"class":80},[63,1033,1034],{"class":65,"line":437},[63,1035,152],{"class":80},[63,1037,1038],{"class":65,"line":446},[63,1039,159],{"emptyLinePlaceholder":158},[63,1041,1042],{"class":65,"line":451},[63,1043,1044],{"class":93},"\u002F\u002F加法计算器\n",[63,1046,1047,1049,1052,1054,1056],{"class":65,"line":457},[63,1048,70],{"class":69},[63,1050,1051],{"class":73}," AddCalculator",[63,1053,170],{"class":80},[63,1055,173],{"class":69},[63,1057,974],{"class":73},[63,1059,1060],{"class":65,"line":465},[63,1061,81],{"class":80},[63,1063,1064],{"class":65,"line":470},[63,1065,87],{"class":69},[63,1067,1068,1070,1072],{"class":65,"line":475},[63,1069,620],{"class":69},[63,1071,623],{"class":73},[63,1073,115],{"class":80},[63,1075,1076],{"class":65,"line":487},[63,1077,121],{"class":80},[63,1079,1080,1082,1084,1086],{"class":65,"line":492},[63,1081,1007],{"class":69},[63,1083,662],{"class":80},[63,1085,665],{"class":69},[63,1087,668],{"class":80},[63,1089,1090],{"class":65,"line":500},[63,1091,146],{"class":80},[63,1093,1094],{"class":65,"line":505},[63,1095,152],{"class":80},[63,1097,1098],{"class":65,"line":510},[63,1099,159],{"emptyLinePlaceholder":158},[63,1101,1102],{"class":65,"line":523},[63,1103,1104],{"class":93},"\u002F\u002F减法计算器\n",[63,1106,1108,1110,1113,1115,1117],{"class":65,"line":1107},62,[63,1109,70],{"class":69},[63,1111,1112],{"class":73}," SubCalculator",[63,1114,170],{"class":80},[63,1116,173],{"class":69},[63,1118,974],{"class":73},[63,1120,1122],{"class":65,"line":1121},63,[63,1123,81],{"class":80},[63,1125,1127],{"class":65,"line":1126},64,[63,1128,87],{"class":69},[63,1130,1132,1134,1136],{"class":65,"line":1131},65,[63,1133,620],{"class":69},[63,1135,623],{"class":73},[63,1137,115],{"class":80},[63,1139,1141],{"class":65,"line":1140},66,[63,1142,121],{"class":80},[63,1144,1146,1148,1150,1152],{"class":65,"line":1145},67,[63,1147,1007],{"class":69},[63,1149,662],{"class":80},[63,1151,699],{"class":69},[63,1153,668],{"class":80},[63,1155,1157],{"class":65,"line":1156},68,[63,1158,146],{"class":80},[63,1160,1162],{"class":65,"line":1161},69,[63,1163,152],{"class":80},[63,1165,1167],{"class":65,"line":1166},70,[63,1168,159],{"emptyLinePlaceholder":158},[63,1170,1172],{"class":65,"line":1171},71,[63,1173,1174],{"class":93},"\u002F\u002F乘法计算器\n",[63,1176,1178,1180,1183,1185,1187],{"class":65,"line":1177},72,[63,1179,70],{"class":69},[63,1181,1182],{"class":73}," MulCalculator",[63,1184,170],{"class":80},[63,1186,173],{"class":69},[63,1188,974],{"class":73},[63,1190,1192],{"class":65,"line":1191},73,[63,1193,81],{"class":80},[63,1195,1197],{"class":65,"line":1196},74,[63,1198,87],{"class":69},[63,1200,1202,1204,1206],{"class":65,"line":1201},75,[63,1203,620],{"class":69},[63,1205,623],{"class":73},[63,1207,115],{"class":80},[63,1209,1211],{"class":65,"line":1210},76,[63,1212,121],{"class":80},[63,1214,1216,1218,1220,1222],{"class":65,"line":1215},77,[63,1217,1007],{"class":69},[63,1219,662],{"class":80},[63,1221,729],{"class":69},[63,1223,668],{"class":80},[63,1225,1227],{"class":65,"line":1226},78,[63,1228,146],{"class":80},[63,1230,1232],{"class":65,"line":1231},79,[63,1233,152],{"class":80},[63,1235,1237],{"class":65,"line":1236},80,[63,1238,159],{"emptyLinePlaceholder":158},[63,1240,1242,1244,1247],{"class":65,"line":1241},81,[63,1243,330],{"class":69},[63,1245,1246],{"class":73}," test02",[63,1248,115],{"class":80},[63,1250,1252],{"class":65,"line":1251},82,[63,1253,81],{"class":80},[63,1255,1257],{"class":65,"line":1256},83,[63,1258,1259],{"class":93},"    \u002F\u002F创建加法计算器\n",[63,1261,1263,1266,1268,1271,1273,1276],{"class":65,"line":1262},84,[63,1264,1265],{"class":80},"    AbstractCalculator ",[63,1267,729],{"class":69},[63,1269,1270],{"class":80},"abc ",[63,1272,799],{"class":69},[63,1274,1275],{"class":69}," new",[63,1277,1278],{"class":80}," AddCalculator;\n",[63,1280,1282,1285,1287,1289],{"class":65,"line":1281},85,[63,1283,1284],{"class":80},"    abc->m_Num1 ",[63,1286,799],{"class":69},[63,1288,802],{"class":516},[63,1290,520],{"class":80},[63,1292,1294,1297,1299,1301],{"class":65,"line":1293},86,[63,1295,1296],{"class":80},"    abc->m_Num2 ",[63,1298,799],{"class":69},[63,1300,802],{"class":516},[63,1302,520],{"class":80},[63,1304,1306,1308,1310,1313,1315,1317,1319,1322,1324,1326,1328,1331,1333,1336,1338],{"class":65,"line":1305},87,[63,1307,820],{"class":80},[63,1309,130],{"class":69},[63,1311,1312],{"class":80}," abc->m_Num1 ",[63,1314,130],{"class":69},[63,1316,830],{"class":133},[63,1318,137],{"class":69},[63,1320,1321],{"class":80}," abc->m_Num2 ",[63,1323,130],{"class":69},[63,1325,840],{"class":133},[63,1327,137],{"class":69},[63,1329,1330],{"class":80}," abc->",[63,1332,848],{"class":73},[63,1334,1335],{"class":80},"() ",[63,1337,130],{"class":69},[63,1339,140],{"class":80},[63,1341,1343,1346,1349],{"class":65,"line":1342},88,[63,1344,1345],{"class":69},"    delete",[63,1347,1348],{"class":80}," abc;",[63,1350,1351],{"class":93},"  \u002F\u002F用完了记得销毁\n",[63,1353,1355],{"class":65,"line":1354},89,[63,1356,159],{"emptyLinePlaceholder":158},[63,1358,1360],{"class":65,"line":1359},90,[63,1361,1362],{"class":93},"    \u002F\u002F创建减法计算器\n",[63,1364,1366,1369,1371,1373],{"class":65,"line":1365},91,[63,1367,1368],{"class":80},"    abc ",[63,1370,799],{"class":69},[63,1372,1275],{"class":69},[63,1374,1375],{"class":80}," SubCalculator;\n",[63,1377,1379,1381,1383,1385],{"class":65,"line":1378},92,[63,1380,1284],{"class":80},[63,1382,799],{"class":69},[63,1384,802],{"class":516},[63,1386,520],{"class":80},[63,1388,1390,1392,1394,1396],{"class":65,"line":1389},93,[63,1391,1296],{"class":80},[63,1393,799],{"class":69},[63,1395,802],{"class":516},[63,1397,520],{"class":80},[63,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419,1421,1423,1425,1427,1429],{"class":65,"line":1400},94,[63,1402,820],{"class":80},[63,1404,130],{"class":69},[63,1406,1312],{"class":80},[63,1408,130],{"class":69},[63,1410,877],{"class":133},[63,1412,137],{"class":69},[63,1414,1321],{"class":80},[63,1416,130],{"class":69},[63,1418,840],{"class":133},[63,1420,137],{"class":69},[63,1422,1330],{"class":80},[63,1424,848],{"class":73},[63,1426,1335],{"class":80},[63,1428,130],{"class":69},[63,1430,140],{"class":80},[63,1432,1434,1436],{"class":65,"line":1433},95,[63,1435,1345],{"class":69},[63,1437,1438],{"class":80}," abc;  \n",[63,1440,1442],{"class":65,"line":1441},96,[63,1443,159],{"emptyLinePlaceholder":158},[63,1445,1447],{"class":65,"line":1446},97,[63,1448,1449],{"class":93},"    \u002F\u002F创建乘法计算器\n",[63,1451,1453,1455,1457,1459],{"class":65,"line":1452},98,[63,1454,1368],{"class":80},[63,1456,799],{"class":69},[63,1458,1275],{"class":69},[63,1460,1461],{"class":80}," MulCalculator;\n",[63,1463,1465,1467,1469,1471],{"class":65,"line":1464},99,[63,1466,1284],{"class":80},[63,1468,799],{"class":69},[63,1470,802],{"class":516},[63,1472,520],{"class":80},[63,1474,1476,1478,1480,1482],{"class":65,"line":1475},100,[63,1477,1296],{"class":80},[63,1479,799],{"class":69},[63,1481,802],{"class":516},[63,1483,520],{"class":80},[63,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515],{"class":65,"line":1486},101,[63,1488,820],{"class":80},[63,1490,130],{"class":69},[63,1492,1312],{"class":80},[63,1494,130],{"class":69},[63,1496,919],{"class":133},[63,1498,137],{"class":69},[63,1500,1321],{"class":80},[63,1502,130],{"class":69},[63,1504,840],{"class":133},[63,1506,137],{"class":69},[63,1508,1330],{"class":80},[63,1510,848],{"class":73},[63,1512,1335],{"class":80},[63,1514,130],{"class":69},[63,1516,140],{"class":80},[63,1518,1520,1522],{"class":65,"line":1519},102,[63,1521,1345],{"class":69},[63,1523,1524],{"class":80}," abc;\n",[63,1526,1528],{"class":65,"line":1527},103,[63,1529,372],{"class":80},[63,1531,1533],{"class":65,"line":1532},104,[63,1534,159],{"emptyLinePlaceholder":158},[63,1536,1538,1540,1542],{"class":65,"line":1537},105,[63,1539,478],{"class":69},[63,1541,481],{"class":73},[63,1543,484],{"class":80},[63,1545,1547],{"class":65,"line":1546},106,[63,1548,159],{"emptyLinePlaceholder":158},[63,1550,1552],{"class":65,"line":1551},107,[63,1553,1554],{"class":93},"    \u002F\u002Ftest01();\n",[63,1556,1558],{"class":65,"line":1557},108,[63,1559,159],{"emptyLinePlaceholder":158},[63,1561,1563,1566],{"class":65,"line":1562},109,[63,1564,1565],{"class":73},"    test02",[63,1567,366],{"class":80},[63,1569,1571],{"class":65,"line":1570},110,[63,1572,159],{"emptyLinePlaceholder":158},[63,1574,1576],{"class":65,"line":1575},111,[63,1577,159],{"emptyLinePlaceholder":158},[63,1579,1581,1583,1585],{"class":65,"line":1580},112,[63,1582,513],{"class":69},[63,1584,517],{"class":516},[63,1586,520],{"class":80},[63,1588,1590],{"class":65,"line":1589},113,[63,1591,372],{"class":80},[19,1593,1594],{},[22,1595,530],{},[53,1597,1600],{"className":1598,"code":1599,"language":536,"meta":58},[534],"10 + 10 = 20\n10 - 10 = 0\n10 * 10 = 100\n",[60,1601,1599],{"__ignoreMap":58},[1603,1604,1605],"blockquote",{},[19,1606,1607],{},"总结：C++开发提倡利用多态设计程序架构，因为多态优点很多",[15,1609,1610],{"id":1610},"纯虚函数和抽象类",[19,1612,1613],{},"在多态中，通常父类中虚函数的实现是毫无意义的，主要都是调用子类重写的内容",[19,1615,1616,1617],{},"因此可以将虚函数改为",[22,1618,1619],{},"纯虚函数",[19,1621,1622,1623],{},"纯虚函数语法：",[60,1624,1625],{},"virtual 返回值类型 函数名 （参数列表）= 0 ;",[19,1627,1628],{},"当类中有了纯虚函数，这个类也称为==抽象类==",[19,1630,1631,1634],{},[22,1632,1633],{},"抽象类特点","：",[29,1636,1637,1640],{},[32,1638,1639],{},"无法实例化对象",[32,1641,1642],{},"子类必须重写抽象类中的纯虚函数，否则也属于抽象类",[19,1644,1645],{},[22,1646,591],{},[53,1648,1650],{"className":55,"code":1649,"language":57,"meta":58,"style":58},"class Base\n{\npublic:\n    \u002F\u002F纯虚函数\n    \u002F\u002F类中只要有一个纯虚函数就称为抽象类\n    \u002F\u002F抽象类无法实例化对象\n    \u002F\u002F子类必须重写父类中的纯虚函数，否则也属于抽象类\n    virtual void func() = 0;\n};\n\nclass Son :public Base\n{\npublic:\n    virtual void func() \n    {\n        cout \u003C\u003C \"func调用\" \u003C\u003C endl;\n    };\n};\n\nvoid test01()\n{\n    Base * base = NULL;\n    \u002F\u002Fbase = new Base; \u002F\u002F 错误，抽象类无法实例化对象\n    base = new Son;\n    base->func();\n    delete base;\u002F\u002F记得销毁\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[60,1651,1652,1659,1663,1667,1672,1677,1682,1687,1704,1708,1712,1725,1729,1733,1744,1748,1761,1766,1770,1774,1782,1786,1803,1811,1823,1833,1843,1847,1851,1859,1863,1869,1873,1877,1885],{"__ignoreMap":58},[63,1653,1654,1656],{"class":65,"line":66},[63,1655,70],{"class":69},[63,1657,1658],{"class":73}," Base\n",[63,1660,1661],{"class":65,"line":77},[63,1662,81],{"class":80},[63,1664,1665],{"class":65,"line":84},[63,1666,87],{"class":69},[63,1668,1669],{"class":65,"line":90},[63,1670,1671],{"class":93},"    \u002F\u002F纯虚函数\n",[63,1673,1674],{"class":65,"line":97},[63,1675,1676],{"class":93},"    \u002F\u002F类中只要有一个纯虚函数就称为抽象类\n",[63,1678,1679],{"class":65,"line":103},[63,1680,1681],{"class":93},"    \u002F\u002F抽象类无法实例化对象\n",[63,1683,1684],{"class":65,"line":118},[63,1685,1686],{"class":93},"    \u002F\u002F子类必须重写父类中的纯虚函数，否则也属于抽象类\n",[63,1688,1689,1691,1693,1696,1698,1700,1702],{"class":65,"line":124},[63,1690,106],{"class":69},[63,1692,109],{"class":69},[63,1694,1695],{"class":73}," func",[63,1697,1335],{"class":80},[63,1699,799],{"class":69},[63,1701,517],{"class":516},[63,1703,520],{"class":80},[63,1705,1706],{"class":65,"line":143},[63,1707,152],{"class":80},[63,1709,1710],{"class":65,"line":149},[63,1711,159],{"emptyLinePlaceholder":158},[63,1713,1714,1716,1719,1721,1723],{"class":65,"line":155},[63,1715,70],{"class":69},[63,1717,1718],{"class":73}," Son",[63,1720,170],{"class":80},[63,1722,173],{"class":69},[63,1724,1658],{"class":73},[63,1726,1727],{"class":65,"line":162},[63,1728,81],{"class":80},[63,1730,1731],{"class":65,"line":178},[63,1732,87],{"class":69},[63,1734,1735,1737,1739,1741],{"class":65,"line":183},[63,1736,106],{"class":69},[63,1738,109],{"class":69},[63,1740,1695],{"class":73},[63,1742,1743],{"class":80},"() \n",[63,1745,1746],{"class":65,"line":188},[63,1747,121],{"class":80},[63,1749,1750,1752,1754,1757,1759],{"class":65,"line":198},[63,1751,127],{"class":80},[63,1753,130],{"class":69},[63,1755,1756],{"class":133}," \"func调用\"",[63,1758,137],{"class":69},[63,1760,140],{"class":80},[63,1762,1763],{"class":65,"line":203},[63,1764,1765],{"class":80},"    };\n",[63,1767,1768],{"class":65,"line":217},[63,1769,152],{"class":80},[63,1771,1772],{"class":65,"line":222},[63,1773,159],{"emptyLinePlaceholder":158},[63,1775,1776,1778,1780],{"class":65,"line":227},[63,1777,330],{"class":69},[63,1779,421],{"class":73},[63,1781,115],{"class":80},[63,1783,1784],{"class":65,"line":232},[63,1785,81],{"class":80},[63,1787,1788,1791,1793,1796,1798,1801],{"class":65,"line":246},[63,1789,1790],{"class":80},"    Base ",[63,1792,729],{"class":69},[63,1794,1795],{"class":80}," base ",[63,1797,799],{"class":69},[63,1799,1800],{"class":516}," NULL",[63,1802,520],{"class":80},[63,1804,1805,1808],{"class":65,"line":251},[63,1806,1807],{"class":93},"    \u002F\u002Fbase = new Base;",[63,1809,1810],{"class":93}," \u002F\u002F 错误，抽象类无法实例化对象\n",[63,1812,1813,1816,1818,1820],{"class":65,"line":256},[63,1814,1815],{"class":80},"    base ",[63,1817,799],{"class":69},[63,1819,1275],{"class":69},[63,1821,1822],{"class":80}," Son;\n",[63,1824,1825,1828,1831],{"class":65,"line":261},[63,1826,1827],{"class":80},"    base->",[63,1829,1830],{"class":73},"func",[63,1832,366],{"class":80},[63,1834,1835,1837,1840],{"class":65,"line":270},[63,1836,1345],{"class":69},[63,1838,1839],{"class":80}," base;",[63,1841,1842],{"class":93},"\u002F\u002F记得销毁\n",[63,1844,1845],{"class":65,"line":275},[63,1846,372],{"class":80},[63,1848,1849],{"class":65,"line":289},[63,1850,159],{"emptyLinePlaceholder":158},[63,1852,1853,1855,1857],{"class":65,"line":294},[63,1854,478],{"class":69},[63,1856,481],{"class":73},[63,1858,484],{"class":80},[63,1860,1861],{"class":65,"line":299},[63,1862,159],{"emptyLinePlaceholder":158},[63,1864,1865,1867],{"class":65,"line":304},[63,1866,495],{"class":73},[63,1868,366],{"class":80},[63,1870,1871],{"class":65,"line":310},[63,1872,159],{"emptyLinePlaceholder":158},[63,1874,1875],{"class":65,"line":316},[63,1876,159],{"emptyLinePlaceholder":158},[63,1878,1879,1881,1883],{"class":65,"line":322},[63,1880,513],{"class":69},[63,1882,517],{"class":516},[63,1884,520],{"class":80},[63,1886,1887],{"class":65,"line":327},[63,1888,372],{"class":80},[19,1890,1891],{},[22,1892,530],{},[53,1894,1897],{"className":1895,"code":1896,"language":536,"meta":58},[534],"func调用\n",[60,1898,1896],{"__ignoreMap":58},[15,1900,1901],{"id":1901},"多态案例二-制作饮品",[19,1903,1904],{},[22,1905,569],{},[19,1907,1908],{},"制作饮品的大致流程为：煮水 -  冲泡 - 倒入杯中 - 加入辅料",[19,1910,1911],{},"利用多态技术实现本案例，提供抽象制作饮品基类，提供子类制作咖啡和茶叶",[19,1913,1914],{},[1915,1916],"img",{"alt":1917,"src":1918},"1545985945198","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002Fstage3-1545985945198-f6ce42c7a5.webp",[19,1920,1921],{},[22,1922,591],{},[53,1924,1926],{"className":55,"code":1925,"language":57,"meta":58,"style":58},"\u002F\u002F抽象制作饮品\nclass AbstractDrinking {\npublic:\n    \u002F\u002F烧水\n    virtual void Boil() = 0;\n    \u002F\u002F冲泡\n    virtual void Brew() = 0;\n    \u002F\u002F倒入杯中\n    virtual void PourInCup() = 0;\n    \u002F\u002F加入辅料\n    virtual void PutSomething() = 0;\n    \u002F\u002F规定流程\n    void MakeDrink() {\n        Boil();\n        Brew();\n        PourInCup();\n        PutSomething();\n    }\n};\n\n\u002F\u002F制作咖啡\nclass Coffee : public AbstractDrinking {\npublic:\n    \u002F\u002F烧水\n    virtual void Boil() {\n        cout \u003C\u003C \"煮农夫山泉!\" \u003C\u003C endl;\n    }\n    \u002F\u002F冲泡\n    virtual void Brew() {\n        cout \u003C\u003C \"冲泡咖啡!\" \u003C\u003C endl;\n    }\n    \u002F\u002F倒入杯中\n    virtual void PourInCup() {\n        cout \u003C\u003C \"将咖啡倒入杯中!\" \u003C\u003C endl;\n    }\n    \u002F\u002F加入辅料\n    virtual void PutSomething() {\n        cout \u003C\u003C \"加入牛奶!\" \u003C\u003C endl;\n    }\n};\n\n\u002F\u002F制作茶水\nclass Tea : public AbstractDrinking {\npublic:\n    \u002F\u002F烧水\n    virtual void Boil() {\n        cout \u003C\u003C \"煮自来水!\" \u003C\u003C endl;\n    }\n    \u002F\u002F冲泡\n    virtual void Brew() {\n        cout \u003C\u003C \"冲泡茶叶!\" \u003C\u003C endl;\n    }\n    \u002F\u002F倒入杯中\n    virtual void PourInCup() {\n        cout \u003C\u003C \"将茶水倒入杯中!\" \u003C\u003C endl;\n    }\n    \u002F\u002F加入辅料\n    virtual void PutSomething() {\n        cout \u003C\u003C \"加入枸杞!\" \u003C\u003C endl;\n    }\n};\n\n\u002F\u002F业务函数\nvoid DoWork(AbstractDrinking* drink) {\n    drink->MakeDrink();\n    delete drink;\n}\n\nvoid test01() {\n    DoWork(new Coffee);\n    cout \u003C\u003C \"--------------\" \u003C\u003C endl;\n    DoWork(new Tea);\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[60,1927,1928,1933,1942,1946,1951,1968,1973,1990,1995,2012,2017,2034,2039,2048,2055,2062,2069,2076,2080,2084,2088,2093,2109,2113,2117,2127,2140,2144,2148,2158,2171,2175,2179,2189,2202,2206,2210,2220,2233,2237,2241,2245,2250,2265,2269,2273,2283,2296,2300,2304,2314,2327,2331,2335,2345,2358,2362,2366,2376,2389,2393,2397,2401,2406,2425,2435,2442,2446,2450,2458,2471,2484,2495,2499,2503,2511,2515,2521,2525,2529,2537],{"__ignoreMap":58},[63,1929,1930],{"class":65,"line":66},[63,1931,1932],{"class":93},"\u002F\u002F抽象制作饮品\n",[63,1934,1935,1937,1940],{"class":65,"line":77},[63,1936,70],{"class":69},[63,1938,1939],{"class":73}," AbstractDrinking",[63,1941,611],{"class":80},[63,1943,1944],{"class":65,"line":84},[63,1945,87],{"class":69},[63,1947,1948],{"class":65,"line":90},[63,1949,1950],{"class":93},"    \u002F\u002F烧水\n",[63,1952,1953,1955,1957,1960,1962,1964,1966],{"class":65,"line":97},[63,1954,106],{"class":69},[63,1956,109],{"class":69},[63,1958,1959],{"class":73}," Boil",[63,1961,1335],{"class":80},[63,1963,799],{"class":69},[63,1965,517],{"class":516},[63,1967,520],{"class":80},[63,1969,1970],{"class":65,"line":103},[63,1971,1972],{"class":93},"    \u002F\u002F冲泡\n",[63,1974,1975,1977,1979,1982,1984,1986,1988],{"class":65,"line":118},[63,1976,106],{"class":69},[63,1978,109],{"class":69},[63,1980,1981],{"class":73}," Brew",[63,1983,1335],{"class":80},[63,1985,799],{"class":69},[63,1987,517],{"class":516},[63,1989,520],{"class":80},[63,1991,1992],{"class":65,"line":124},[63,1993,1994],{"class":93},"    \u002F\u002F倒入杯中\n",[63,1996,1997,1999,2001,2004,2006,2008,2010],{"class":65,"line":143},[63,1998,106],{"class":69},[63,2000,109],{"class":69},[63,2002,2003],{"class":73}," PourInCup",[63,2005,1335],{"class":80},[63,2007,799],{"class":69},[63,2009,517],{"class":516},[63,2011,520],{"class":80},[63,2013,2014],{"class":65,"line":149},[63,2015,2016],{"class":93},"    \u002F\u002F加入辅料\n",[63,2018,2019,2021,2023,2026,2028,2030,2032],{"class":65,"line":155},[63,2020,106],{"class":69},[63,2022,109],{"class":69},[63,2024,2025],{"class":73}," PutSomething",[63,2027,1335],{"class":80},[63,2029,799],{"class":69},[63,2031,517],{"class":516},[63,2033,520],{"class":80},[63,2035,2036],{"class":65,"line":162},[63,2037,2038],{"class":93},"    \u002F\u002F规定流程\n",[63,2040,2041,2043,2046],{"class":65,"line":178},[63,2042,191],{"class":69},[63,2044,2045],{"class":73}," MakeDrink",[63,2047,484],{"class":80},[63,2049,2050,2053],{"class":65,"line":183},[63,2051,2052],{"class":73},"        Boil",[63,2054,366],{"class":80},[63,2056,2057,2060],{"class":65,"line":188},[63,2058,2059],{"class":73},"        Brew",[63,2061,366],{"class":80},[63,2063,2064,2067],{"class":65,"line":198},[63,2065,2066],{"class":73},"        PourInCup",[63,2068,366],{"class":80},[63,2070,2071,2074],{"class":65,"line":203},[63,2072,2073],{"class":73},"        PutSomething",[63,2075,366],{"class":80},[63,2077,2078],{"class":65,"line":217},[63,2079,146],{"class":80},[63,2081,2082],{"class":65,"line":222},[63,2083,152],{"class":80},[63,2085,2086],{"class":65,"line":227},[63,2087,159],{"emptyLinePlaceholder":158},[63,2089,2090],{"class":65,"line":232},[63,2091,2092],{"class":93},"\u002F\u002F制作咖啡\n",[63,2094,2095,2097,2100,2103,2105,2107],{"class":65,"line":246},[63,2096,70],{"class":69},[63,2098,2099],{"class":73}," Coffee",[63,2101,2102],{"class":80}," : ",[63,2104,173],{"class":69},[63,2106,1939],{"class":73},[63,2108,611],{"class":80},[63,2110,2111],{"class":65,"line":251},[63,2112,87],{"class":69},[63,2114,2115],{"class":65,"line":256},[63,2116,1950],{"class":93},[63,2118,2119,2121,2123,2125],{"class":65,"line":261},[63,2120,106],{"class":69},[63,2122,109],{"class":69},[63,2124,1959],{"class":73},[63,2126,484],{"class":80},[63,2128,2129,2131,2133,2136,2138],{"class":65,"line":270},[63,2130,127],{"class":80},[63,2132,130],{"class":69},[63,2134,2135],{"class":133}," \"煮农夫山泉!\"",[63,2137,137],{"class":69},[63,2139,140],{"class":80},[63,2141,2142],{"class":65,"line":275},[63,2143,146],{"class":80},[63,2145,2146],{"class":65,"line":289},[63,2147,1972],{"class":93},[63,2149,2150,2152,2154,2156],{"class":65,"line":294},[63,2151,106],{"class":69},[63,2153,109],{"class":69},[63,2155,1981],{"class":73},[63,2157,484],{"class":80},[63,2159,2160,2162,2164,2167,2169],{"class":65,"line":299},[63,2161,127],{"class":80},[63,2163,130],{"class":69},[63,2165,2166],{"class":133}," \"冲泡咖啡!\"",[63,2168,137],{"class":69},[63,2170,140],{"class":80},[63,2172,2173],{"class":65,"line":304},[63,2174,146],{"class":80},[63,2176,2177],{"class":65,"line":310},[63,2178,1994],{"class":93},[63,2180,2181,2183,2185,2187],{"class":65,"line":316},[63,2182,106],{"class":69},[63,2184,109],{"class":69},[63,2186,2003],{"class":73},[63,2188,484],{"class":80},[63,2190,2191,2193,2195,2198,2200],{"class":65,"line":322},[63,2192,127],{"class":80},[63,2194,130],{"class":69},[63,2196,2197],{"class":133}," \"将咖啡倒入杯中!\"",[63,2199,137],{"class":69},[63,2201,140],{"class":80},[63,2203,2204],{"class":65,"line":327},[63,2205,146],{"class":80},[63,2207,2208],{"class":65,"line":352},[63,2209,2016],{"class":93},[63,2211,2212,2214,2216,2218],{"class":65,"line":357},[63,2213,106],{"class":69},[63,2215,109],{"class":69},[63,2217,2025],{"class":73},[63,2219,484],{"class":80},[63,2221,2222,2224,2226,2229,2231],{"class":65,"line":369},[63,2223,127],{"class":80},[63,2225,130],{"class":69},[63,2227,2228],{"class":133}," \"加入牛奶!\"",[63,2230,137],{"class":69},[63,2232,140],{"class":80},[63,2234,2235],{"class":65,"line":375},[63,2236,146],{"class":80},[63,2238,2239],{"class":65,"line":381},[63,2240,152],{"class":80},[63,2242,2243],{"class":65,"line":387},[63,2244,159],{"emptyLinePlaceholder":158},[63,2246,2247],{"class":65,"line":393},[63,2248,2249],{"class":93},"\u002F\u002F制作茶水\n",[63,2251,2252,2254,2257,2259,2261,2263],{"class":65,"line":399},[63,2253,70],{"class":69},[63,2255,2256],{"class":73}," Tea",[63,2258,2102],{"class":80},[63,2260,173],{"class":69},[63,2262,1939],{"class":73},[63,2264,611],{"class":80},[63,2266,2267],{"class":65,"line":405},[63,2268,87],{"class":69},[63,2270,2271],{"class":65,"line":411},[63,2272,1950],{"class":93},[63,2274,2275,2277,2279,2281],{"class":65,"line":416},[63,2276,106],{"class":69},[63,2278,109],{"class":69},[63,2280,1959],{"class":73},[63,2282,484],{"class":80},[63,2284,2285,2287,2289,2292,2294],{"class":65,"line":426},[63,2286,127],{"class":80},[63,2288,130],{"class":69},[63,2290,2291],{"class":133}," \"煮自来水!\"",[63,2293,137],{"class":69},[63,2295,140],{"class":80},[63,2297,2298],{"class":65,"line":431},[63,2299,146],{"class":80},[63,2301,2302],{"class":65,"line":437},[63,2303,1972],{"class":93},[63,2305,2306,2308,2310,2312],{"class":65,"line":446},[63,2307,106],{"class":69},[63,2309,109],{"class":69},[63,2311,1981],{"class":73},[63,2313,484],{"class":80},[63,2315,2316,2318,2320,2323,2325],{"class":65,"line":451},[63,2317,127],{"class":80},[63,2319,130],{"class":69},[63,2321,2322],{"class":133}," \"冲泡茶叶!\"",[63,2324,137],{"class":69},[63,2326,140],{"class":80},[63,2328,2329],{"class":65,"line":457},[63,2330,146],{"class":80},[63,2332,2333],{"class":65,"line":465},[63,2334,1994],{"class":93},[63,2336,2337,2339,2341,2343],{"class":65,"line":470},[63,2338,106],{"class":69},[63,2340,109],{"class":69},[63,2342,2003],{"class":73},[63,2344,484],{"class":80},[63,2346,2347,2349,2351,2354,2356],{"class":65,"line":475},[63,2348,127],{"class":80},[63,2350,130],{"class":69},[63,2352,2353],{"class":133}," \"将茶水倒入杯中!\"",[63,2355,137],{"class":69},[63,2357,140],{"class":80},[63,2359,2360],{"class":65,"line":487},[63,2361,146],{"class":80},[63,2363,2364],{"class":65,"line":492},[63,2365,2016],{"class":93},[63,2367,2368,2370,2372,2374],{"class":65,"line":500},[63,2369,106],{"class":69},[63,2371,109],{"class":69},[63,2373,2025],{"class":73},[63,2375,484],{"class":80},[63,2377,2378,2380,2382,2385,2387],{"class":65,"line":505},[63,2379,127],{"class":80},[63,2381,130],{"class":69},[63,2383,2384],{"class":133}," \"加入枸杞!\"",[63,2386,137],{"class":69},[63,2388,140],{"class":80},[63,2390,2391],{"class":65,"line":510},[63,2392,146],{"class":80},[63,2394,2395],{"class":65,"line":523},[63,2396,152],{"class":80},[63,2398,2399],{"class":65,"line":1107},[63,2400,159],{"emptyLinePlaceholder":158},[63,2402,2403],{"class":65,"line":1121},[63,2404,2405],{"class":93},"\u002F\u002F业务函数\n",[63,2407,2408,2410,2413,2415,2418,2420,2423],{"class":65,"line":1126},[63,2409,330],{"class":69},[63,2411,2412],{"class":73}," DoWork",[63,2414,336],{"class":80},[63,2416,2417],{"class":73},"AbstractDrinking",[63,2419,729],{"class":69},[63,2421,2422],{"class":345}," drink",[63,2424,654],{"class":80},[63,2426,2427,2430,2433],{"class":65,"line":1131},[63,2428,2429],{"class":80},"    drink->",[63,2431,2432],{"class":73},"MakeDrink",[63,2434,366],{"class":80},[63,2436,2437,2439],{"class":65,"line":1140},[63,2438,1345],{"class":69},[63,2440,2441],{"class":80}," drink;\n",[63,2443,2444],{"class":65,"line":1145},[63,2445,372],{"class":80},[63,2447,2448],{"class":65,"line":1156},[63,2449,159],{"emptyLinePlaceholder":158},[63,2451,2452,2454,2456],{"class":65,"line":1161},[63,2453,330],{"class":69},[63,2455,421],{"class":73},[63,2457,484],{"class":80},[63,2459,2460,2463,2465,2468],{"class":65,"line":1166},[63,2461,2462],{"class":73},"    DoWork",[63,2464,336],{"class":80},[63,2466,2467],{"class":69},"new",[63,2469,2470],{"class":80}," Coffee);\n",[63,2472,2473,2475,2477,2480,2482],{"class":65,"line":1171},[63,2474,820],{"class":80},[63,2476,130],{"class":69},[63,2478,2479],{"class":133}," \"--------------\"",[63,2481,137],{"class":69},[63,2483,140],{"class":80},[63,2485,2486,2488,2490,2492],{"class":65,"line":1177},[63,2487,2462],{"class":73},[63,2489,336],{"class":80},[63,2491,2467],{"class":69},[63,2493,2494],{"class":80}," Tea);\n",[63,2496,2497],{"class":65,"line":1191},[63,2498,372],{"class":80},[63,2500,2501],{"class":65,"line":1196},[63,2502,159],{"emptyLinePlaceholder":158},[63,2504,2505,2507,2509],{"class":65,"line":1201},[63,2506,478],{"class":69},[63,2508,481],{"class":73},[63,2510,484],{"class":80},[63,2512,2513],{"class":65,"line":1210},[63,2514,159],{"emptyLinePlaceholder":158},[63,2516,2517,2519],{"class":65,"line":1215},[63,2518,495],{"class":73},[63,2520,366],{"class":80},[63,2522,2523],{"class":65,"line":1226},[63,2524,159],{"emptyLinePlaceholder":158},[63,2526,2527],{"class":65,"line":1231},[63,2528,159],{"emptyLinePlaceholder":158},[63,2530,2531,2533,2535],{"class":65,"line":1236},[63,2532,513],{"class":69},[63,2534,517],{"class":516},[63,2536,520],{"class":80},[63,2538,2539],{"class":65,"line":1241},[63,2540,372],{"class":80},[19,2542,2543],{},[22,2544,530],{},[53,2546,2549],{"className":2547,"code":2548,"language":536,"meta":58},[534],"煮农夫山泉!\n冲泡咖啡!\n将咖啡倒入杯中!\n加入牛奶!\n--------------\n煮自来水!\n冲泡茶叶!\n将茶水倒入杯中!\n加入枸杞!\n",[60,2550,2548],{"__ignoreMap":58},[15,2552,2553],{"id":2553},"虚析构和纯虚析构",[19,2555,2556],{},"多态使用时，如果子类中有属性开辟到堆区，那么父类指针在释放时无法调用到子类的析构代码",[19,2558,2559,2560,2563,2564],{},"解决方式：将父类中的析构函数改为",[22,2561,2562],{},"虚析构","或者",[22,2565,2566],{},"纯虚析构",[19,2568,2569],{},"虚析构和纯虚析构共性：",[29,2571,2572,2575],{},[32,2573,2574],{},"可以解决父类指针释放子类对象",[32,2576,2577],{},"都需要有具体的函数实现",[19,2579,2580],{},"虚析构和纯虚析构区别：",[29,2582,2583],{},[32,2584,2585],{},"如果是纯虚析构，该类属于抽象类，无法实例化对象",[19,2587,2588],{},"虚析构语法：",[19,2590,2591],{},[60,2592,2593],{},"virtual ~类名(){}",[19,2595,2596],{},"纯虚析构语法：",[19,2598,2599],{},[60,2600,2601],{}," virtual ~类名() = 0;",[19,2603,2604],{},[60,2605,2606],{},"类名::~类名(){}",[19,2608,2609],{},[22,2610,591],{},[53,2612,2614],{"className":55,"code":2613,"language":57,"meta":58,"style":58},"class Animal {\npublic:\n\n    Animal()\n    {\n        cout \u003C\u003C \"Animal 构造函数调用！\" \u003C\u003C endl;\n    }\n    virtual void Speak() = 0;\n\n    \u002F\u002F析构函数加上virtual关键字，变成虚析构函数\n    \u002F\u002Fvirtual ~Animal()\n    \u002F\u002F{\n    \u002F\u002F  cout \u003C\u003C \"Animal虚析构函数调用！\" \u003C\u003C endl;\n    \u002F\u002F}\n\n    virtual ~Animal() = 0;\n};\n\nAnimal::~Animal()\n{\n    cout \u003C\u003C \"Animal 纯虚析构函数调用！\" \u003C\u003C endl;\n}\n\n\u002F\u002F和包含普通纯虚函数的类一样，包含了纯虚析构函数的类也是一个抽象类。不能够被实例化。\n\nclass Cat : public Animal {\npublic:\n    Cat(string name)\n    {\n        cout \u003C\u003C \"Cat构造函数调用！\" \u003C\u003C endl;\n        m_Name = new string(name);\n    }\n    virtual void Speak()\n    {\n        cout \u003C\u003C *m_Name \u003C\u003C  \"小猫在说话!\" \u003C\u003C endl;\n    }\n    ~Cat()\n    {\n        cout \u003C\u003C \"Cat析构函数调用!\" \u003C\u003C endl;\n        if (this->m_Name != NULL) {\n            delete m_Name;\n            m_Name = NULL;\n        }\n    }\n\npublic:\n    string *m_Name;\n};\n\nvoid test01()\n{\n    Animal *animal = new Cat(\"Tom\");\n    animal->Speak();\n\n    \u002F\u002F通过父类指针去释放，会导致子类对象可能清理不干净，造成内存泄漏\n    \u002F\u002F怎么解决？给基类增加一个虚析构函数\n    \u002F\u002F虚析构函数就是用来解决通过父类指针释放子类对象\n    delete animal;\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[60,2615,2616,2625,2629,2633,2640,2644,2657,2661,2678,2682,2687,2692,2697,2702,2707,2711,2726,2730,2734,2748,2752,2765,2769,2773,2778,2782,2796,2800,2814,2818,2831,2846,2850,2860,2864,2885,2889,2896,2900,2913,2933,2941,2952,2956,2960,2964,2968,2978,2982,2986,2994,2998,3022,3032,3036,3041,3046,3051,3058,3062,3066,3074,3078,3084,3088,3092,3100],{"__ignoreMap":58},[63,2617,2618,2620,2623],{"class":65,"line":66},[63,2619,70],{"class":69},[63,2621,2622],{"class":73}," Animal",[63,2624,611],{"class":80},[63,2626,2627],{"class":65,"line":77},[63,2628,87],{"class":69},[63,2630,2631],{"class":65,"line":84},[63,2632,159],{"emptyLinePlaceholder":158},[63,2634,2635,2638],{"class":65,"line":90},[63,2636,2637],{"class":73},"    Animal",[63,2639,115],{"class":80},[63,2641,2642],{"class":65,"line":97},[63,2643,121],{"class":80},[63,2645,2646,2648,2650,2653,2655],{"class":65,"line":103},[63,2647,127],{"class":80},[63,2649,130],{"class":69},[63,2651,2652],{"class":133}," \"Animal 构造函数调用！\"",[63,2654,137],{"class":69},[63,2656,140],{"class":80},[63,2658,2659],{"class":65,"line":118},[63,2660,146],{"class":80},[63,2662,2663,2665,2667,2670,2672,2674,2676],{"class":65,"line":124},[63,2664,106],{"class":69},[63,2666,109],{"class":69},[63,2668,2669],{"class":73}," Speak",[63,2671,1335],{"class":80},[63,2673,799],{"class":69},[63,2675,517],{"class":516},[63,2677,520],{"class":80},[63,2679,2680],{"class":65,"line":143},[63,2681,159],{"emptyLinePlaceholder":158},[63,2683,2684],{"class":65,"line":149},[63,2685,2686],{"class":93},"    \u002F\u002F析构函数加上virtual关键字，变成虚析构函数\n",[63,2688,2689],{"class":65,"line":155},[63,2690,2691],{"class":93},"    \u002F\u002Fvirtual ~Animal()\n",[63,2693,2694],{"class":65,"line":162},[63,2695,2696],{"class":93},"    \u002F\u002F{\n",[63,2698,2699],{"class":65,"line":178},[63,2700,2701],{"class":93},"    \u002F\u002F  cout \u003C\u003C \"Animal虚析构函数调用！\" \u003C\u003C endl;\n",[63,2703,2704],{"class":65,"line":183},[63,2705,2706],{"class":93},"    \u002F\u002F}\n",[63,2708,2709],{"class":65,"line":188},[63,2710,159],{"emptyLinePlaceholder":158},[63,2712,2713,2715,2718,2720,2722,2724],{"class":65,"line":198},[63,2714,106],{"class":69},[63,2716,2717],{"class":73}," ~Animal",[63,2719,1335],{"class":80},[63,2721,799],{"class":69},[63,2723,517],{"class":516},[63,2725,520],{"class":80},[63,2727,2728],{"class":65,"line":203},[63,2729,152],{"class":80},[63,2731,2732],{"class":65,"line":217},[63,2733,159],{"emptyLinePlaceholder":158},[63,2735,2736,2738,2741,2744,2746],{"class":65,"line":222},[63,2737,339],{"class":73},[63,2739,2740],{"class":80},"::",[63,2742,2743],{"class":69},"~",[63,2745,339],{"class":73},[63,2747,115],{"class":80},[63,2749,2750],{"class":65,"line":227},[63,2751,81],{"class":80},[63,2753,2754,2756,2758,2761,2763],{"class":65,"line":232},[63,2755,820],{"class":80},[63,2757,130],{"class":69},[63,2759,2760],{"class":133}," \"Animal 纯虚析构函数调用！\"",[63,2762,137],{"class":69},[63,2764,140],{"class":80},[63,2766,2767],{"class":65,"line":246},[63,2768,372],{"class":80},[63,2770,2771],{"class":65,"line":251},[63,2772,159],{"emptyLinePlaceholder":158},[63,2774,2775],{"class":65,"line":256},[63,2776,2777],{"class":93},"\u002F\u002F和包含普通纯虚函数的类一样，包含了纯虚析构函数的类也是一个抽象类。不能够被实例化。\n",[63,2779,2780],{"class":65,"line":261},[63,2781,159],{"emptyLinePlaceholder":158},[63,2783,2784,2786,2788,2790,2792,2794],{"class":65,"line":270},[63,2785,70],{"class":69},[63,2787,167],{"class":73},[63,2789,2102],{"class":80},[63,2791,173],{"class":69},[63,2793,2622],{"class":73},[63,2795,611],{"class":80},[63,2797,2798],{"class":65,"line":275},[63,2799,87],{"class":69},[63,2801,2802,2805,2807,2809,2812],{"class":65,"line":289},[63,2803,2804],{"class":73},"    Cat",[63,2806,336],{"class":80},[63,2808,628],{"class":73},[63,2810,2811],{"class":345}," name",[63,2813,349],{"class":80},[63,2815,2816],{"class":65,"line":294},[63,2817,121],{"class":80},[63,2819,2820,2822,2824,2827,2829],{"class":65,"line":299},[63,2821,127],{"class":80},[63,2823,130],{"class":69},[63,2825,2826],{"class":133}," \"Cat构造函数调用！\"",[63,2828,137],{"class":69},[63,2830,140],{"class":80},[63,2832,2833,2836,2838,2840,2843],{"class":65,"line":304},[63,2834,2835],{"class":80},"        m_Name ",[63,2837,799],{"class":69},[63,2839,1275],{"class":69},[63,2841,2842],{"class":73}," string",[63,2844,2845],{"class":80},"(name);\n",[63,2847,2848],{"class":65,"line":310},[63,2849,146],{"class":80},[63,2851,2852,2854,2856,2858],{"class":65,"line":316},[63,2853,106],{"class":69},[63,2855,109],{"class":69},[63,2857,2669],{"class":73},[63,2859,115],{"class":80},[63,2861,2862],{"class":65,"line":322},[63,2863,121],{"class":80},[63,2865,2866,2868,2870,2873,2876,2878,2881,2883],{"class":65,"line":327},[63,2867,127],{"class":80},[63,2869,130],{"class":69},[63,2871,2872],{"class":69}," *",[63,2874,2875],{"class":80},"m_Name ",[63,2877,130],{"class":69},[63,2879,2880],{"class":133},"  \"小猫在说话!\"",[63,2882,137],{"class":69},[63,2884,140],{"class":80},[63,2886,2887],{"class":65,"line":352},[63,2888,146],{"class":80},[63,2890,2891,2894],{"class":65,"line":357},[63,2892,2893],{"class":73},"    ~Cat",[63,2895,115],{"class":80},[63,2897,2898],{"class":65,"line":369},[63,2899,121],{"class":80},[63,2901,2902,2904,2906,2909,2911],{"class":65,"line":375},[63,2903,127],{"class":80},[63,2905,130],{"class":69},[63,2907,2908],{"class":133}," \"Cat析构函数调用!\"",[63,2910,137],{"class":69},[63,2912,140],{"class":80},[63,2914,2915,2917,2920,2923,2926,2929,2931],{"class":65,"line":381},[63,2916,642],{"class":69},[63,2918,2919],{"class":80}," (",[63,2921,2922],{"class":516},"this",[63,2924,2925],{"class":80},"->m_Name ",[63,2927,2928],{"class":69},"!=",[63,2930,1800],{"class":516},[63,2932,654],{"class":80},[63,2934,2935,2938],{"class":65,"line":387},[63,2936,2937],{"class":69},"            delete",[63,2939,2940],{"class":80}," m_Name;\n",[63,2942,2943,2946,2948,2950],{"class":65,"line":393},[63,2944,2945],{"class":80},"            m_Name ",[63,2947,799],{"class":69},[63,2949,1800],{"class":516},[63,2951,520],{"class":80},[63,2953,2954],{"class":65,"line":399},[63,2955,673],{"class":80},[63,2957,2958],{"class":65,"line":405},[63,2959,146],{"class":80},[63,2961,2962],{"class":65,"line":411},[63,2963,159],{"emptyLinePlaceholder":158},[63,2965,2966],{"class":65,"line":416},[63,2967,87],{"class":69},[63,2969,2970,2973,2975],{"class":65,"line":426},[63,2971,2972],{"class":80},"    string ",[63,2974,729],{"class":69},[63,2976,2977],{"class":80},"m_Name;\n",[63,2979,2980],{"class":65,"line":431},[63,2981,152],{"class":80},[63,2983,2984],{"class":65,"line":437},[63,2985,159],{"emptyLinePlaceholder":158},[63,2987,2988,2990,2992],{"class":65,"line":446},[63,2989,330],{"class":69},[63,2991,421],{"class":73},[63,2993,115],{"class":80},[63,2995,2996],{"class":65,"line":451},[63,2997,81],{"class":80},[63,2999,3000,3003,3005,3008,3010,3012,3014,3016,3019],{"class":65,"line":457},[63,3001,3002],{"class":80},"    Animal ",[63,3004,729],{"class":69},[63,3006,3007],{"class":80},"animal ",[63,3009,799],{"class":69},[63,3011,1275],{"class":69},[63,3013,167],{"class":73},[63,3015,336],{"class":80},[63,3017,3018],{"class":133},"\"Tom\"",[63,3020,3021],{"class":80},");\n",[63,3023,3024,3027,3030],{"class":65,"line":465},[63,3025,3026],{"class":80},"    animal->",[63,3028,3029],{"class":73},"Speak",[63,3031,366],{"class":80},[63,3033,3034],{"class":65,"line":470},[63,3035,159],{"emptyLinePlaceholder":158},[63,3037,3038],{"class":65,"line":475},[63,3039,3040],{"class":93},"    \u002F\u002F通过父类指针去释放，会导致子类对象可能清理不干净，造成内存泄漏\n",[63,3042,3043],{"class":65,"line":487},[63,3044,3045],{"class":93},"    \u002F\u002F怎么解决？给基类增加一个虚析构函数\n",[63,3047,3048],{"class":65,"line":492},[63,3049,3050],{"class":93},"    \u002F\u002F虚析构函数就是用来解决通过父类指针释放子类对象\n",[63,3052,3053,3055],{"class":65,"line":500},[63,3054,1345],{"class":69},[63,3056,3057],{"class":80}," animal;\n",[63,3059,3060],{"class":65,"line":505},[63,3061,372],{"class":80},[63,3063,3064],{"class":65,"line":510},[63,3065,159],{"emptyLinePlaceholder":158},[63,3067,3068,3070,3072],{"class":65,"line":523},[63,3069,478],{"class":69},[63,3071,481],{"class":73},[63,3073,484],{"class":80},[63,3075,3076],{"class":65,"line":1107},[63,3077,159],{"emptyLinePlaceholder":158},[63,3079,3080,3082],{"class":65,"line":1121},[63,3081,495],{"class":73},[63,3083,366],{"class":80},[63,3085,3086],{"class":65,"line":1126},[63,3087,159],{"emptyLinePlaceholder":158},[63,3089,3090],{"class":65,"line":1131},[63,3091,159],{"emptyLinePlaceholder":158},[63,3093,3094,3096,3098],{"class":65,"line":1140},[63,3095,513],{"class":69},[63,3097,517],{"class":516},[63,3099,520],{"class":80},[63,3101,3102],{"class":65,"line":1145},[63,3103,372],{"class":80},[19,3105,3106],{},[22,3107,530],{},[53,3109,3112],{"className":3110,"code":3111,"language":536,"meta":58},[534],"Animal 构造函数调用！\nCat构造函数调用！\nTom小猫在说话!\nCat析构函数调用!\nAnimal 纯虚析构函数调用！\n",[60,3113,3111],{"__ignoreMap":58},[19,3115,541],{},[19,3117,3118],{},"​\t1. 虚析构或纯虚析构就是用来解决通过父类指针释放子类对象",[19,3120,3121],{},"​\t2. 如果子类中没有堆区数据，可以不写为虚析构或纯虚析构",[19,3123,3124],{},"​\t3. 拥有纯虚析构函数的类也属于抽象类",[15,3126,3127],{"id":3127},"多态案例三-电脑组装",[19,3129,3130],{},[22,3131,569],{},[19,3133,3134],{},"电脑主要组成部件为 CPU（用于计算），显卡（用于显示），内存条（用于存储）",[19,3136,3137],{},"将每个零件封装出抽象基类，并且提供不同的厂商生产不同的零件，例如Intel厂商和Lenovo厂商",[19,3139,3140],{},"创建电脑类提供让电脑工作的函数，并且调用每个零件工作的接口",[19,3142,3143],{},"测试时组装三台不同的电脑进行工作",[19,3145,3146],{},[22,3147,591],{},[53,3149,3151],{"className":55,"code":3150,"language":57,"meta":58,"style":58},"#include\u003Ciostream>\nusing namespace std;\n\n\u002F\u002F抽象CPU类\nclass CPU\n{\npublic:\n    \u002F\u002F抽象的计算函数\n    virtual void calculate() = 0;\n};\n\n\u002F\u002F抽象显卡类\nclass VideoCard\n{\npublic:\n    \u002F\u002F抽象的显示函数\n    virtual void display() = 0;\n};\n\n\u002F\u002F抽象内存条类\nclass Memory\n{\npublic:\n    \u002F\u002F抽象的存储函数\n    virtual void storage() = 0;\n};\n\n\u002F\u002F电脑类\nclass Computer\n{\npublic:\n    Computer(CPU * cpu, VideoCard * vc, Memory * mem)\n    {\n        m_cpu = cpu;\n        m_vc = vc;\n        m_mem = mem;\n    }\n\n    \u002F\u002F提供工作的函数\n    void work()\n    {\n        \u002F\u002F让零件工作起来，调用接口\n        m_cpu->calculate();\n\n        m_vc->display();\n\n        m_mem->storage();\n    }\n\n    \u002F\u002F提供析构函数 释放3个电脑零件\n    ~Computer()\n    {\n\n        \u002F\u002F释放CPU零件\n        if (m_cpu != NULL)\n        {\n            delete m_cpu;\n            m_cpu = NULL;\n        }\n\n        \u002F\u002F释放显卡零件\n        if (m_vc != NULL)\n        {\n            delete m_vc;\n            m_vc = NULL;\n        }\n\n        \u002F\u002F释放内存条零件\n        if (m_mem != NULL)\n        {\n            delete m_mem;\n            m_mem = NULL;\n        }\n    }\n\nprivate:\n\n    CPU * m_cpu; \u002F\u002FCPU的零件指针\n    VideoCard * m_vc; \u002F\u002F显卡零件指针\n    Memory * m_mem; \u002F\u002F内存条零件指针\n};\n\n\u002F\u002F具体厂商\n\u002F\u002FIntel厂商\nclass IntelCPU :public CPU\n{\npublic:\n    virtual void calculate()\n    {\n        cout \u003C\u003C \"Intel的CPU开始计算了！\" \u003C\u003C endl;\n    }\n};\n\nclass IntelVideoCard :public VideoCard\n{\npublic:\n    virtual void display()\n    {\n        cout \u003C\u003C \"Intel的显卡开始显示了！\" \u003C\u003C endl;\n    }\n};\n\nclass IntelMemory :public Memory\n{\npublic:\n    virtual void storage()\n    {\n        cout \u003C\u003C \"Intel的内存条开始存储了！\" \u003C\u003C endl;\n    }\n};\n\n\u002F\u002FLenovo厂商\nclass LenovoCPU :public CPU\n{\npublic:\n    virtual void calculate()\n    {\n        cout \u003C\u003C \"Lenovo的CPU开始计算了！\" \u003C\u003C endl;\n    }\n};\n\nclass LenovoVideoCard :public VideoCard\n{\npublic:\n    virtual void display()\n    {\n        cout \u003C\u003C \"Lenovo的显卡开始显示了！\" \u003C\u003C endl;\n    }\n};\n\nclass LenovoMemory :public Memory\n{\npublic:\n    virtual void storage()\n    {\n        cout \u003C\u003C \"Lenovo的内存条开始存储了！\" \u003C\u003C endl;\n    }\n};\n\nvoid test01()\n{\n    \u002F\u002F第一台电脑零件\n    CPU * intelCpu = new IntelCPU;\n    VideoCard * intelCard = new IntelVideoCard;\n    Memory * intelMem = new IntelMemory;\n\n    cout \u003C\u003C \"第一台电脑开始工作：\" \u003C\u003C endl;\n    \u002F\u002F创建第一台电脑\n    Computer * computer1 = new Computer(intelCpu, intelCard, intelMem);\n    computer1->work();\n    delete computer1;\n\n    cout \u003C\u003C \"-----------------------\" \u003C\u003C endl;\n    cout \u003C\u003C \"第二台电脑开始工作：\" \u003C\u003C endl;\n    \u002F\u002F第二台电脑组装\n    Computer * computer2 = new Computer(new LenovoCPU, new LenovoVideoCard, new LenovoMemory);;\n    computer2->work();\n    delete computer2;\n\n    cout \u003C\u003C \"-----------------------\" \u003C\u003C endl;\n    cout \u003C\u003C \"第三台电脑开始工作：\" \u003C\u003C endl;\n    \u002F\u002F第三台电脑组装\n    Computer * computer3 = new Computer(new LenovoCPU, new IntelVideoCard, new LenovoMemory);;\n    computer3->work();\n    delete computer3;\n\n}\n",[60,3152,3153,3161,3174,3178,3183,3190,3194,3198,3203,3220,3224,3228,3233,3240,3244,3248,3253,3270,3274,3278,3283,3290,3294,3298,3303,3320,3324,3328,3333,3340,3344,3348,3386,3390,3400,3410,3420,3424,3428,3433,3442,3446,3451,3461,3465,3475,3479,3489,3493,3497,3502,3509,3513,3517,3522,3535,3540,3547,3558,3562,3566,3571,3584,3588,3595,3606,3610,3614,3619,3632,3636,3643,3654,3658,3662,3666,3671,3675,3688,3701,3714,3718,3722,3727,3732,3745,3749,3753,3763,3767,3780,3784,3788,3792,3805,3809,3813,3823,3827,3840,3844,3848,3852,3865,3869,3873,3883,3887,3900,3904,3908,3912,3917,3930,3935,3940,3951,3956,3970,3975,3980,3985,3999,4004,4009,4020,4025,4039,4044,4049,4054,4068,4073,4078,4089,4094,4108,4113,4118,4123,4132,4137,4143,4160,4177,4194,4199,4213,4219,4240,4251,4259,4264,4278,4292,4298,4331,4341,4349,4354,4367,4381,4387,4418,4428,4436,4441],{"__ignoreMap":58},[63,3154,3155,3158],{"class":65,"line":66},[63,3156,3157],{"class":69},"#include",[63,3159,3160],{"class":133},"\u003Ciostream>\n",[63,3162,3163,3166,3169,3172],{"class":65,"line":77},[63,3164,3165],{"class":69},"using",[63,3167,3168],{"class":69}," namespace",[63,3170,3171],{"class":73}," std",[63,3173,520],{"class":80},[63,3175,3176],{"class":65,"line":84},[63,3177,159],{"emptyLinePlaceholder":158},[63,3179,3180],{"class":65,"line":90},[63,3181,3182],{"class":93},"\u002F\u002F抽象CPU类\n",[63,3184,3185,3187],{"class":65,"line":97},[63,3186,70],{"class":69},[63,3188,3189],{"class":73}," CPU\n",[63,3191,3192],{"class":65,"line":103},[63,3193,81],{"class":80},[63,3195,3196],{"class":65,"line":118},[63,3197,87],{"class":69},[63,3199,3200],{"class":65,"line":124},[63,3201,3202],{"class":93},"    \u002F\u002F抽象的计算函数\n",[63,3204,3205,3207,3209,3212,3214,3216,3218],{"class":65,"line":143},[63,3206,106],{"class":69},[63,3208,109],{"class":69},[63,3210,3211],{"class":73}," calculate",[63,3213,1335],{"class":80},[63,3215,799],{"class":69},[63,3217,517],{"class":516},[63,3219,520],{"class":80},[63,3221,3222],{"class":65,"line":149},[63,3223,152],{"class":80},[63,3225,3226],{"class":65,"line":155},[63,3227,159],{"emptyLinePlaceholder":158},[63,3229,3230],{"class":65,"line":162},[63,3231,3232],{"class":93},"\u002F\u002F抽象显卡类\n",[63,3234,3235,3237],{"class":65,"line":178},[63,3236,70],{"class":69},[63,3238,3239],{"class":73}," VideoCard\n",[63,3241,3242],{"class":65,"line":183},[63,3243,81],{"class":80},[63,3245,3246],{"class":65,"line":188},[63,3247,87],{"class":69},[63,3249,3250],{"class":65,"line":198},[63,3251,3252],{"class":93},"    \u002F\u002F抽象的显示函数\n",[63,3254,3255,3257,3259,3262,3264,3266,3268],{"class":65,"line":203},[63,3256,106],{"class":69},[63,3258,109],{"class":69},[63,3260,3261],{"class":73}," display",[63,3263,1335],{"class":80},[63,3265,799],{"class":69},[63,3267,517],{"class":516},[63,3269,520],{"class":80},[63,3271,3272],{"class":65,"line":217},[63,3273,152],{"class":80},[63,3275,3276],{"class":65,"line":222},[63,3277,159],{"emptyLinePlaceholder":158},[63,3279,3280],{"class":65,"line":227},[63,3281,3282],{"class":93},"\u002F\u002F抽象内存条类\n",[63,3284,3285,3287],{"class":65,"line":232},[63,3286,70],{"class":69},[63,3288,3289],{"class":73}," Memory\n",[63,3291,3292],{"class":65,"line":246},[63,3293,81],{"class":80},[63,3295,3296],{"class":65,"line":251},[63,3297,87],{"class":69},[63,3299,3300],{"class":65,"line":256},[63,3301,3302],{"class":93},"    \u002F\u002F抽象的存储函数\n",[63,3304,3305,3307,3309,3312,3314,3316,3318],{"class":65,"line":261},[63,3306,106],{"class":69},[63,3308,109],{"class":69},[63,3310,3311],{"class":73}," storage",[63,3313,1335],{"class":80},[63,3315,799],{"class":69},[63,3317,517],{"class":516},[63,3319,520],{"class":80},[63,3321,3322],{"class":65,"line":270},[63,3323,152],{"class":80},[63,3325,3326],{"class":65,"line":275},[63,3327,159],{"emptyLinePlaceholder":158},[63,3329,3330],{"class":65,"line":289},[63,3331,3332],{"class":93},"\u002F\u002F电脑类\n",[63,3334,3335,3337],{"class":65,"line":294},[63,3336,70],{"class":69},[63,3338,3339],{"class":73}," Computer\n",[63,3341,3342],{"class":65,"line":299},[63,3343,81],{"class":80},[63,3345,3346],{"class":65,"line":304},[63,3347,87],{"class":69},[63,3349,3350,3353,3355,3358,3360,3363,3366,3369,3371,3374,3376,3379,3381,3384],{"class":65,"line":310},[63,3351,3352],{"class":73},"    Computer",[63,3354,336],{"class":80},[63,3356,3357],{"class":73},"CPU",[63,3359,2872],{"class":69},[63,3361,3362],{"class":345}," cpu",[63,3364,3365],{"class":80},", ",[63,3367,3368],{"class":73},"VideoCard",[63,3370,2872],{"class":69},[63,3372,3373],{"class":345}," vc",[63,3375,3365],{"class":80},[63,3377,3378],{"class":73},"Memory",[63,3380,2872],{"class":69},[63,3382,3383],{"class":345}," mem",[63,3385,349],{"class":80},[63,3387,3388],{"class":65,"line":316},[63,3389,121],{"class":80},[63,3391,3392,3395,3397],{"class":65,"line":322},[63,3393,3394],{"class":80},"        m_cpu ",[63,3396,799],{"class":69},[63,3398,3399],{"class":80}," cpu;\n",[63,3401,3402,3405,3407],{"class":65,"line":327},[63,3403,3404],{"class":80},"        m_vc ",[63,3406,799],{"class":69},[63,3408,3409],{"class":80}," vc;\n",[63,3411,3412,3415,3417],{"class":65,"line":352},[63,3413,3414],{"class":80},"        m_mem ",[63,3416,799],{"class":69},[63,3418,3419],{"class":80}," mem;\n",[63,3421,3422],{"class":65,"line":357},[63,3423,146],{"class":80},[63,3425,3426],{"class":65,"line":369},[63,3427,159],{"emptyLinePlaceholder":158},[63,3429,3430],{"class":65,"line":375},[63,3431,3432],{"class":93},"    \u002F\u002F提供工作的函数\n",[63,3434,3435,3437,3440],{"class":65,"line":381},[63,3436,191],{"class":69},[63,3438,3439],{"class":73}," work",[63,3441,115],{"class":80},[63,3443,3444],{"class":65,"line":387},[63,3445,121],{"class":80},[63,3447,3448],{"class":65,"line":393},[63,3449,3450],{"class":93},"        \u002F\u002F让零件工作起来，调用接口\n",[63,3452,3453,3456,3459],{"class":65,"line":399},[63,3454,3455],{"class":80},"        m_cpu->",[63,3457,3458],{"class":73},"calculate",[63,3460,366],{"class":80},[63,3462,3463],{"class":65,"line":405},[63,3464,159],{"emptyLinePlaceholder":158},[63,3466,3467,3470,3473],{"class":65,"line":411},[63,3468,3469],{"class":80},"        m_vc->",[63,3471,3472],{"class":73},"display",[63,3474,366],{"class":80},[63,3476,3477],{"class":65,"line":416},[63,3478,159],{"emptyLinePlaceholder":158},[63,3480,3481,3484,3487],{"class":65,"line":426},[63,3482,3483],{"class":80},"        m_mem->",[63,3485,3486],{"class":73},"storage",[63,3488,366],{"class":80},[63,3490,3491],{"class":65,"line":431},[63,3492,146],{"class":80},[63,3494,3495],{"class":65,"line":437},[63,3496,159],{"emptyLinePlaceholder":158},[63,3498,3499],{"class":65,"line":446},[63,3500,3501],{"class":93},"    \u002F\u002F提供析构函数 释放3个电脑零件\n",[63,3503,3504,3507],{"class":65,"line":451},[63,3505,3506],{"class":73},"    ~Computer",[63,3508,115],{"class":80},[63,3510,3511],{"class":65,"line":457},[63,3512,121],{"class":80},[63,3514,3515],{"class":65,"line":465},[63,3516,159],{"emptyLinePlaceholder":158},[63,3518,3519],{"class":65,"line":470},[63,3520,3521],{"class":93},"        \u002F\u002F释放CPU零件\n",[63,3523,3524,3526,3529,3531,3533],{"class":65,"line":475},[63,3525,642],{"class":69},[63,3527,3528],{"class":80}," (m_cpu ",[63,3530,2928],{"class":69},[63,3532,1800],{"class":516},[63,3534,349],{"class":80},[63,3536,3537],{"class":65,"line":487},[63,3538,3539],{"class":80},"        {\n",[63,3541,3542,3544],{"class":65,"line":492},[63,3543,2937],{"class":69},[63,3545,3546],{"class":80}," m_cpu;\n",[63,3548,3549,3552,3554,3556],{"class":65,"line":500},[63,3550,3551],{"class":80},"            m_cpu ",[63,3553,799],{"class":69},[63,3555,1800],{"class":516},[63,3557,520],{"class":80},[63,3559,3560],{"class":65,"line":505},[63,3561,673],{"class":80},[63,3563,3564],{"class":65,"line":510},[63,3565,159],{"emptyLinePlaceholder":158},[63,3567,3568],{"class":65,"line":523},[63,3569,3570],{"class":93},"        \u002F\u002F释放显卡零件\n",[63,3572,3573,3575,3578,3580,3582],{"class":65,"line":1107},[63,3574,642],{"class":69},[63,3576,3577],{"class":80}," (m_vc ",[63,3579,2928],{"class":69},[63,3581,1800],{"class":516},[63,3583,349],{"class":80},[63,3585,3586],{"class":65,"line":1121},[63,3587,3539],{"class":80},[63,3589,3590,3592],{"class":65,"line":1126},[63,3591,2937],{"class":69},[63,3593,3594],{"class":80}," m_vc;\n",[63,3596,3597,3600,3602,3604],{"class":65,"line":1131},[63,3598,3599],{"class":80},"            m_vc ",[63,3601,799],{"class":69},[63,3603,1800],{"class":516},[63,3605,520],{"class":80},[63,3607,3608],{"class":65,"line":1140},[63,3609,673],{"class":80},[63,3611,3612],{"class":65,"line":1145},[63,3613,159],{"emptyLinePlaceholder":158},[63,3615,3616],{"class":65,"line":1156},[63,3617,3618],{"class":93},"        \u002F\u002F释放内存条零件\n",[63,3620,3621,3623,3626,3628,3630],{"class":65,"line":1161},[63,3622,642],{"class":69},[63,3624,3625],{"class":80}," (m_mem ",[63,3627,2928],{"class":69},[63,3629,1800],{"class":516},[63,3631,349],{"class":80},[63,3633,3634],{"class":65,"line":1166},[63,3635,3539],{"class":80},[63,3637,3638,3640],{"class":65,"line":1171},[63,3639,2937],{"class":69},[63,3641,3642],{"class":80}," m_mem;\n",[63,3644,3645,3648,3650,3652],{"class":65,"line":1177},[63,3646,3647],{"class":80},"            m_mem ",[63,3649,799],{"class":69},[63,3651,1800],{"class":516},[63,3653,520],{"class":80},[63,3655,3656],{"class":65,"line":1191},[63,3657,673],{"class":80},[63,3659,3660],{"class":65,"line":1196},[63,3661,146],{"class":80},[63,3663,3664],{"class":65,"line":1201},[63,3665,159],{"emptyLinePlaceholder":158},[63,3667,3668],{"class":65,"line":1210},[63,3669,3670],{"class":69},"private:\n",[63,3672,3673],{"class":65,"line":1215},[63,3674,159],{"emptyLinePlaceholder":158},[63,3676,3677,3680,3682,3685],{"class":65,"line":1226},[63,3678,3679],{"class":80},"    CPU ",[63,3681,729],{"class":69},[63,3683,3684],{"class":80}," m_cpu;",[63,3686,3687],{"class":93}," \u002F\u002FCPU的零件指针\n",[63,3689,3690,3693,3695,3698],{"class":65,"line":1231},[63,3691,3692],{"class":80},"    VideoCard ",[63,3694,729],{"class":69},[63,3696,3697],{"class":80}," m_vc;",[63,3699,3700],{"class":93}," \u002F\u002F显卡零件指针\n",[63,3702,3703,3706,3708,3711],{"class":65,"line":1236},[63,3704,3705],{"class":80},"    Memory ",[63,3707,729],{"class":69},[63,3709,3710],{"class":80}," m_mem;",[63,3712,3713],{"class":93}," \u002F\u002F内存条零件指针\n",[63,3715,3716],{"class":65,"line":1241},[63,3717,152],{"class":80},[63,3719,3720],{"class":65,"line":1251},[63,3721,159],{"emptyLinePlaceholder":158},[63,3723,3724],{"class":65,"line":1256},[63,3725,3726],{"class":93},"\u002F\u002F具体厂商\n",[63,3728,3729],{"class":65,"line":1262},[63,3730,3731],{"class":93},"\u002F\u002FIntel厂商\n",[63,3733,3734,3736,3739,3741,3743],{"class":65,"line":1281},[63,3735,70],{"class":69},[63,3737,3738],{"class":73}," IntelCPU",[63,3740,170],{"class":80},[63,3742,173],{"class":69},[63,3744,3189],{"class":73},[63,3746,3747],{"class":65,"line":1293},[63,3748,81],{"class":80},[63,3750,3751],{"class":65,"line":1305},[63,3752,87],{"class":69},[63,3754,3755,3757,3759,3761],{"class":65,"line":1342},[63,3756,106],{"class":69},[63,3758,109],{"class":69},[63,3760,3211],{"class":73},[63,3762,115],{"class":80},[63,3764,3765],{"class":65,"line":1354},[63,3766,121],{"class":80},[63,3768,3769,3771,3773,3776,3778],{"class":65,"line":1359},[63,3770,127],{"class":80},[63,3772,130],{"class":69},[63,3774,3775],{"class":133}," \"Intel的CPU开始计算了！\"",[63,3777,137],{"class":69},[63,3779,140],{"class":80},[63,3781,3782],{"class":65,"line":1365},[63,3783,146],{"class":80},[63,3785,3786],{"class":65,"line":1378},[63,3787,152],{"class":80},[63,3789,3790],{"class":65,"line":1389},[63,3791,159],{"emptyLinePlaceholder":158},[63,3793,3794,3796,3799,3801,3803],{"class":65,"line":1400},[63,3795,70],{"class":69},[63,3797,3798],{"class":73}," IntelVideoCard",[63,3800,170],{"class":80},[63,3802,173],{"class":69},[63,3804,3239],{"class":73},[63,3806,3807],{"class":65,"line":1433},[63,3808,81],{"class":80},[63,3810,3811],{"class":65,"line":1441},[63,3812,87],{"class":69},[63,3814,3815,3817,3819,3821],{"class":65,"line":1446},[63,3816,106],{"class":69},[63,3818,109],{"class":69},[63,3820,3261],{"class":73},[63,3822,115],{"class":80},[63,3824,3825],{"class":65,"line":1452},[63,3826,121],{"class":80},[63,3828,3829,3831,3833,3836,3838],{"class":65,"line":1464},[63,3830,127],{"class":80},[63,3832,130],{"class":69},[63,3834,3835],{"class":133}," \"Intel的显卡开始显示了！\"",[63,3837,137],{"class":69},[63,3839,140],{"class":80},[63,3841,3842],{"class":65,"line":1475},[63,3843,146],{"class":80},[63,3845,3846],{"class":65,"line":1486},[63,3847,152],{"class":80},[63,3849,3850],{"class":65,"line":1519},[63,3851,159],{"emptyLinePlaceholder":158},[63,3853,3854,3856,3859,3861,3863],{"class":65,"line":1527},[63,3855,70],{"class":69},[63,3857,3858],{"class":73}," IntelMemory",[63,3860,170],{"class":80},[63,3862,173],{"class":69},[63,3864,3289],{"class":73},[63,3866,3867],{"class":65,"line":1532},[63,3868,81],{"class":80},[63,3870,3871],{"class":65,"line":1537},[63,3872,87],{"class":69},[63,3874,3875,3877,3879,3881],{"class":65,"line":1546},[63,3876,106],{"class":69},[63,3878,109],{"class":69},[63,3880,3311],{"class":73},[63,3882,115],{"class":80},[63,3884,3885],{"class":65,"line":1551},[63,3886,121],{"class":80},[63,3888,3889,3891,3893,3896,3898],{"class":65,"line":1557},[63,3890,127],{"class":80},[63,3892,130],{"class":69},[63,3894,3895],{"class":133}," \"Intel的内存条开始存储了！\"",[63,3897,137],{"class":69},[63,3899,140],{"class":80},[63,3901,3902],{"class":65,"line":1562},[63,3903,146],{"class":80},[63,3905,3906],{"class":65,"line":1570},[63,3907,152],{"class":80},[63,3909,3910],{"class":65,"line":1575},[63,3911,159],{"emptyLinePlaceholder":158},[63,3913,3914],{"class":65,"line":1580},[63,3915,3916],{"class":93},"\u002F\u002FLenovo厂商\n",[63,3918,3919,3921,3924,3926,3928],{"class":65,"line":1589},[63,3920,70],{"class":69},[63,3922,3923],{"class":73}," LenovoCPU",[63,3925,170],{"class":80},[63,3927,173],{"class":69},[63,3929,3189],{"class":73},[63,3931,3933],{"class":65,"line":3932},114,[63,3934,81],{"class":80},[63,3936,3938],{"class":65,"line":3937},115,[63,3939,87],{"class":69},[63,3941,3943,3945,3947,3949],{"class":65,"line":3942},116,[63,3944,106],{"class":69},[63,3946,109],{"class":69},[63,3948,3211],{"class":73},[63,3950,115],{"class":80},[63,3952,3954],{"class":65,"line":3953},117,[63,3955,121],{"class":80},[63,3957,3959,3961,3963,3966,3968],{"class":65,"line":3958},118,[63,3960,127],{"class":80},[63,3962,130],{"class":69},[63,3964,3965],{"class":133}," \"Lenovo的CPU开始计算了！\"",[63,3967,137],{"class":69},[63,3969,140],{"class":80},[63,3971,3973],{"class":65,"line":3972},119,[63,3974,146],{"class":80},[63,3976,3978],{"class":65,"line":3977},120,[63,3979,152],{"class":80},[63,3981,3983],{"class":65,"line":3982},121,[63,3984,159],{"emptyLinePlaceholder":158},[63,3986,3988,3990,3993,3995,3997],{"class":65,"line":3987},122,[63,3989,70],{"class":69},[63,3991,3992],{"class":73}," LenovoVideoCard",[63,3994,170],{"class":80},[63,3996,173],{"class":69},[63,3998,3239],{"class":73},[63,4000,4002],{"class":65,"line":4001},123,[63,4003,81],{"class":80},[63,4005,4007],{"class":65,"line":4006},124,[63,4008,87],{"class":69},[63,4010,4012,4014,4016,4018],{"class":65,"line":4011},125,[63,4013,106],{"class":69},[63,4015,109],{"class":69},[63,4017,3261],{"class":73},[63,4019,115],{"class":80},[63,4021,4023],{"class":65,"line":4022},126,[63,4024,121],{"class":80},[63,4026,4028,4030,4032,4035,4037],{"class":65,"line":4027},127,[63,4029,127],{"class":80},[63,4031,130],{"class":69},[63,4033,4034],{"class":133}," \"Lenovo的显卡开始显示了！\"",[63,4036,137],{"class":69},[63,4038,140],{"class":80},[63,4040,4042],{"class":65,"line":4041},128,[63,4043,146],{"class":80},[63,4045,4047],{"class":65,"line":4046},129,[63,4048,152],{"class":80},[63,4050,4052],{"class":65,"line":4051},130,[63,4053,159],{"emptyLinePlaceholder":158},[63,4055,4057,4059,4062,4064,4066],{"class":65,"line":4056},131,[63,4058,70],{"class":69},[63,4060,4061],{"class":73}," LenovoMemory",[63,4063,170],{"class":80},[63,4065,173],{"class":69},[63,4067,3289],{"class":73},[63,4069,4071],{"class":65,"line":4070},132,[63,4072,81],{"class":80},[63,4074,4076],{"class":65,"line":4075},133,[63,4077,87],{"class":69},[63,4079,4081,4083,4085,4087],{"class":65,"line":4080},134,[63,4082,106],{"class":69},[63,4084,109],{"class":69},[63,4086,3311],{"class":73},[63,4088,115],{"class":80},[63,4090,4092],{"class":65,"line":4091},135,[63,4093,121],{"class":80},[63,4095,4097,4099,4101,4104,4106],{"class":65,"line":4096},136,[63,4098,127],{"class":80},[63,4100,130],{"class":69},[63,4102,4103],{"class":133}," \"Lenovo的内存条开始存储了！\"",[63,4105,137],{"class":69},[63,4107,140],{"class":80},[63,4109,4111],{"class":65,"line":4110},137,[63,4112,146],{"class":80},[63,4114,4116],{"class":65,"line":4115},138,[63,4117,152],{"class":80},[63,4119,4121],{"class":65,"line":4120},139,[63,4122,159],{"emptyLinePlaceholder":158},[63,4124,4126,4128,4130],{"class":65,"line":4125},140,[63,4127,330],{"class":69},[63,4129,421],{"class":73},[63,4131,115],{"class":80},[63,4133,4135],{"class":65,"line":4134},141,[63,4136,81],{"class":80},[63,4138,4140],{"class":65,"line":4139},142,[63,4141,4142],{"class":93},"    \u002F\u002F第一台电脑零件\n",[63,4144,4146,4148,4150,4153,4155,4157],{"class":65,"line":4145},143,[63,4147,3679],{"class":80},[63,4149,729],{"class":69},[63,4151,4152],{"class":80}," intelCpu ",[63,4154,799],{"class":69},[63,4156,1275],{"class":69},[63,4158,4159],{"class":80}," IntelCPU;\n",[63,4161,4163,4165,4167,4170,4172,4174],{"class":65,"line":4162},144,[63,4164,3692],{"class":80},[63,4166,729],{"class":69},[63,4168,4169],{"class":80}," intelCard ",[63,4171,799],{"class":69},[63,4173,1275],{"class":69},[63,4175,4176],{"class":80}," IntelVideoCard;\n",[63,4178,4180,4182,4184,4187,4189,4191],{"class":65,"line":4179},145,[63,4181,3705],{"class":80},[63,4183,729],{"class":69},[63,4185,4186],{"class":80}," intelMem ",[63,4188,799],{"class":69},[63,4190,1275],{"class":69},[63,4192,4193],{"class":80}," IntelMemory;\n",[63,4195,4197],{"class":65,"line":4196},146,[63,4198,159],{"emptyLinePlaceholder":158},[63,4200,4202,4204,4206,4209,4211],{"class":65,"line":4201},147,[63,4203,820],{"class":80},[63,4205,130],{"class":69},[63,4207,4208],{"class":133}," \"第一台电脑开始工作：\"",[63,4210,137],{"class":69},[63,4212,140],{"class":80},[63,4214,4216],{"class":65,"line":4215},148,[63,4217,4218],{"class":93},"    \u002F\u002F创建第一台电脑\n",[63,4220,4222,4225,4227,4230,4232,4234,4237],{"class":65,"line":4221},149,[63,4223,4224],{"class":80},"    Computer ",[63,4226,729],{"class":69},[63,4228,4229],{"class":80}," computer1 ",[63,4231,799],{"class":69},[63,4233,1275],{"class":69},[63,4235,4236],{"class":73}," Computer",[63,4238,4239],{"class":80},"(intelCpu, intelCard, intelMem);\n",[63,4241,4243,4246,4249],{"class":65,"line":4242},150,[63,4244,4245],{"class":80},"    computer1->",[63,4247,4248],{"class":73},"work",[63,4250,366],{"class":80},[63,4252,4254,4256],{"class":65,"line":4253},151,[63,4255,1345],{"class":69},[63,4257,4258],{"class":80}," computer1;\n",[63,4260,4262],{"class":65,"line":4261},152,[63,4263,159],{"emptyLinePlaceholder":158},[63,4265,4267,4269,4271,4274,4276],{"class":65,"line":4266},153,[63,4268,820],{"class":80},[63,4270,130],{"class":69},[63,4272,4273],{"class":133}," \"-----------------------\"",[63,4275,137],{"class":69},[63,4277,140],{"class":80},[63,4279,4281,4283,4285,4288,4290],{"class":65,"line":4280},154,[63,4282,820],{"class":80},[63,4284,130],{"class":69},[63,4286,4287],{"class":133}," \"第二台电脑开始工作：\"",[63,4289,137],{"class":69},[63,4291,140],{"class":80},[63,4293,4295],{"class":65,"line":4294},155,[63,4296,4297],{"class":93},"    \u002F\u002F第二台电脑组装\n",[63,4299,4301,4303,4305,4308,4310,4312,4314,4316,4318,4321,4323,4326,4328],{"class":65,"line":4300},156,[63,4302,4224],{"class":80},[63,4304,729],{"class":69},[63,4306,4307],{"class":80}," computer2 ",[63,4309,799],{"class":69},[63,4311,1275],{"class":69},[63,4313,4236],{"class":73},[63,4315,336],{"class":80},[63,4317,2467],{"class":69},[63,4319,4320],{"class":80}," LenovoCPU, ",[63,4322,2467],{"class":69},[63,4324,4325],{"class":80}," LenovoVideoCard, ",[63,4327,2467],{"class":69},[63,4329,4330],{"class":80}," LenovoMemory);;\n",[63,4332,4334,4337,4339],{"class":65,"line":4333},157,[63,4335,4336],{"class":80},"    computer2->",[63,4338,4248],{"class":73},[63,4340,366],{"class":80},[63,4342,4344,4346],{"class":65,"line":4343},158,[63,4345,1345],{"class":69},[63,4347,4348],{"class":80}," computer2;\n",[63,4350,4352],{"class":65,"line":4351},159,[63,4353,159],{"emptyLinePlaceholder":158},[63,4355,4357,4359,4361,4363,4365],{"class":65,"line":4356},160,[63,4358,820],{"class":80},[63,4360,130],{"class":69},[63,4362,4273],{"class":133},[63,4364,137],{"class":69},[63,4366,140],{"class":80},[63,4368,4370,4372,4374,4377,4379],{"class":65,"line":4369},161,[63,4371,820],{"class":80},[63,4373,130],{"class":69},[63,4375,4376],{"class":133}," \"第三台电脑开始工作：\"",[63,4378,137],{"class":69},[63,4380,140],{"class":80},[63,4382,4384],{"class":65,"line":4383},162,[63,4385,4386],{"class":93},"    \u002F\u002F第三台电脑组装\n",[63,4388,4390,4392,4394,4397,4399,4401,4403,4405,4407,4409,4411,4414,4416],{"class":65,"line":4389},163,[63,4391,4224],{"class":80},[63,4393,729],{"class":69},[63,4395,4396],{"class":80}," computer3 ",[63,4398,799],{"class":69},[63,4400,1275],{"class":69},[63,4402,4236],{"class":73},[63,4404,336],{"class":80},[63,4406,2467],{"class":69},[63,4408,4320],{"class":80},[63,4410,2467],{"class":69},[63,4412,4413],{"class":80}," IntelVideoCard, ",[63,4415,2467],{"class":69},[63,4417,4330],{"class":80},[63,4419,4421,4424,4426],{"class":65,"line":4420},164,[63,4422,4423],{"class":80},"    computer3->",[63,4425,4248],{"class":73},[63,4427,366],{"class":80},[63,4429,4431,4433],{"class":65,"line":4430},165,[63,4432,1345],{"class":69},[63,4434,4435],{"class":80}," computer3;\n",[63,4437,4439],{"class":65,"line":4438},166,[63,4440,159],{"emptyLinePlaceholder":158},[63,4442,4444],{"class":65,"line":4443},167,[63,4445,372],{"class":80},[19,4447,4448,4450,4451,4454],{},[22,4449,530],{}," 此代码块不含 ",[60,4452,4453],{},"main"," 函数，是语法、接口或分文件示例，不能独立运行，因此没有终端输出。",[4456,4457,4458],"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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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);}",{"title":58,"searchDepth":77,"depth":77,"links":4460},[4461],{"id":5,"depth":84,"text":5},"1400-0600","2023-10-05","2023-10-05-cplusplus-jiao-xue","\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md",false,{},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai",{"title":5,"description":58},"wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","pnCARAqvjl0K1C6zv8jH2xh1dXAY8FK1waGHbu893x0",[4475,4482,4488,4494,4500,4506,4512,4518,4524,4530,4536,4542,4548,4554,4560,4566,4572,4578,4584,4590,4592,4598,4604,4610,4616,4622,4628,4634,4640,4646,4652,4658,4664,4670,4676,4682,4688,4694,4700,4706,4712,4718,4723,4729,4735,4741,4747,4753,4759,4765,4771,4777,4783,4789,4795,4801,4807,4813,4819,4825,4831,4837,4843,4849,4855,4861,4867,4873,4879,4885,4891,4897,4903,4909,4915,4921,4927,4933,4939,4945,4951,4957,4963,4969,4975,4981,4987,4993,4999,5005,5011,5017],{"path":4476,"stem":4477,"title":4478,"authors":4479,"date":4463,"chapterOrder":4480,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++开发环境搭建与测试",[7],"0100",0,{"path":4483,"stem":4484,"title":4485,"authors":4486,"date":4463,"chapterOrder":4487,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基础初识",[7],"0200",{"path":4489,"stem":4490,"title":4491,"authors":4492,"date":4463,"chapterOrder":4493,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","数据类型与数据存放",[7],"0300",{"path":4495,"stem":4496,"title":4497,"authors":4498,"date":4463,"chapterOrder":4499,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","输入输出",[7],"0400",{"path":4501,"stem":4502,"title":4503,"authors":4504,"date":4463,"chapterOrder":4505,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","wiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","运算符",[7],"0500",{"path":4507,"stem":4508,"title":4509,"authors":4510,"date":4463,"chapterOrder":4511,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","wiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程结构",[7],"0600",{"path":4513,"stem":4514,"title":4515,"authors":4516,"date":4463,"chapterOrder":4517,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","wiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","数组",[7],"0700",{"path":4519,"stem":4520,"title":4521,"authors":4522,"date":4463,"chapterOrder":4523,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函数与头文件",[7],"0800",{"path":4525,"stem":4526,"title":4527,"authors":4528,"date":4463,"chapterOrder":4529,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指针",[7],"0900",{"path":4531,"stem":4532,"title":4533,"authors":4534,"date":4463,"chapterOrder":4535,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","结构体与共用体",[7],"1000",{"path":4537,"stem":4538,"title":4539,"authors":4540,"date":4463,"chapterOrder":4541,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","内存分区与生命周期",[7],"1100",{"path":4543,"stem":4544,"title":4545,"authors":4546,"date":4463,"chapterOrder":4547,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","wiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用",[7],"1200",{"path":4549,"stem":4550,"title":4551,"authors":4552,"date":4463,"chapterOrder":4553,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao","wiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高","函数提高",[7],"1300",{"path":4555,"stem":4556,"title":4557,"authors":4558,"date":4463,"chapterOrder":4559,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1350-ming-ming-kong-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F1350-命名空间","命名空间",[7],"1350",{"path":4561,"stem":4562,"title":4563,"authors":4564,"date":4463,"chapterOrder":4565,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封装",[7],"1400-0100",{"path":4567,"stem":4568,"title":4569,"authors":4570,"date":4463,"chapterOrder":4571,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","对象初始化和清理",[7],"1400-0200",{"path":4573,"stem":4574,"title":4575,"authors":4576,"date":4463,"chapterOrder":4577,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","对象模型与this指针",[7],"1400-0300",{"path":4579,"stem":4580,"title":4581,"authors":4582,"date":4463,"chapterOrder":4583,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","友元与运算符重载",[7],"1400-0400",{"path":4585,"stem":4586,"title":4587,"authors":4588,"date":4463,"chapterOrder":4589,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","继承",[7],"1400-0500",{"path":4470,"stem":4472,"title":5,"authors":4591,"date":4463,"chapterOrder":4462,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},[7],{"path":4593,"stem":4594,"title":4595,"authors":4596,"date":4463,"chapterOrder":4597,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","类和对象",[7],"1400",{"path":4599,"stem":4600,"title":4601,"authors":4602,"date":4463,"chapterOrder":4603,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1450-han-shu-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1450-函数指针","函数指针",[7],"1450",{"path":4605,"stem":4606,"title":4607,"authors":4608,"date":4463,"chapterOrder":4609,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","wiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作",[7],"1500",{"path":4611,"stem":4612,"title":4613,"authors":4614,"date":4463,"chapterOrder":4615,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","wiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理",[7],"1600",{"path":4617,"stem":4618,"title":4619,"authors":4620,"date":4463,"chapterOrder":4621,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板",[7],"1700",{"path":4623,"stem":4624,"title":4625,"authors":4626,"date":4463,"chapterOrder":4627,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初识",[7],"1800-0100",{"path":4629,"stem":4630,"title":4631,"authors":4632,"date":4463,"chapterOrder":4633,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array",[7],"1800-0200",{"path":4635,"stem":4636,"title":4637,"authors":4638,"date":4463,"chapterOrder":4639,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器",[7],"1800-0300",{"path":4641,"stem":4642,"title":4643,"authors":4644,"date":4463,"chapterOrder":4645,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器",[7],"1800-0400",{"path":4647,"stem":4648,"title":4649,"authors":4650,"date":4463,"chapterOrder":4651,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器",[7],"1800-0500",{"path":4653,"stem":4654,"title":4655,"authors":4656,"date":4463,"chapterOrder":4657,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器",[7],"1800-0600",{"path":4659,"stem":4660,"title":4661,"authors":4662,"date":4463,"chapterOrder":4663,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue 容器",[7],"1800-0700",{"path":4665,"stem":4666,"title":4667,"authors":4668,"date":4463,"chapterOrder":4669,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器",[7],"1800-0800",{"path":4671,"stem":4672,"title":4673,"authors":4674,"date":4463,"chapterOrder":4675,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器",[7],"1800-0900",{"path":4677,"stem":4678,"title":4679,"authors":4680,"date":4463,"chapterOrder":4681,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器",[7],"1800-1000",{"path":4683,"stem":4684,"title":4685,"authors":4686,"date":4463,"chapterOrder":4687,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","函数对象与谓词",[7],"1800-1100",{"path":4689,"stem":4690,"title":4691,"authors":4692,"date":4463,"chapterOrder":4693,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","常用算法",[7],"1800-1200",{"path":4695,"stem":4696,"title":4697,"authors":4698,"date":4463,"chapterOrder":4699,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高编程",[7],"1800",{"path":4701,"stem":4702,"title":4703,"authors":4704,"date":4463,"chapterOrder":4705,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++类型转换",[7],"1900",{"path":4707,"stem":4708,"title":4709,"authors":4710,"date":4463,"chapterOrder":4711,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto",[7],"2000-0100",{"path":4713,"stem":4714,"title":4715,"authors":4716,"date":4463,"chapterOrder":4717,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr",[7],"2000-0200",{"path":4719,"stem":4720,"title":3165,"authors":4721,"date":4463,"chapterOrder":4722,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using",[7],"2000-0300",{"path":4724,"stem":4725,"title":4726,"authors":4727,"date":4463,"chapterOrder":4728,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class",[7],"2000-0400",{"path":4730,"stem":4731,"title":4732,"authors":4733,"date":4463,"chapterOrder":4734,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","范围 for 循环",[7],"2000-0500",{"path":4736,"stem":4737,"title":4738,"authors":4739,"date":4463,"chapterOrder":4740,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","结构化绑定",[7],"2000-0600",{"path":4742,"stem":4743,"title":4744,"authors":4745,"date":4463,"chapterOrder":4746,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr",[7],"2000-0700",{"path":4748,"stem":4749,"title":4750,"authors":4751,"date":4463,"chapterOrder":4752,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII",[7],"2000-0800",{"path":4754,"stem":4755,"title":4756,"authors":4757,"date":4463,"chapterOrder":4758,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指针",[7],"2000-0900",{"path":4760,"stem":4761,"title":4762,"authors":4763,"date":4463,"chapterOrder":4764,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","右值引用和移动语义",[7],"2000-1000",{"path":4766,"stem":4767,"title":4768,"authors":4769,"date":4463,"chapterOrder":4770,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda 表达式",[7],"2000-1100",{"path":4772,"stem":4773,"title":4774,"authors":4775,"date":4463,"chapterOrder":4776,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function",[7],"2000-1200",{"path":4778,"stem":4779,"title":4780,"authors":4781,"date":4463,"chapterOrder":4782,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind",[7],"2000-1300",{"path":4784,"stem":4785,"title":4786,"authors":4787,"date":4463,"chapterOrder":4788,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional",[7],"2000-1400",{"path":4790,"stem":4791,"title":4792,"authors":4793,"date":4463,"chapterOrder":4794,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant",[7],"2000-1500",{"path":4796,"stem":4797,"title":4798,"authors":4799,"date":4463,"chapterOrder":4800,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span",[7],"2000-1600",{"path":4802,"stem":4803,"title":4804,"authors":4805,"date":4463,"chapterOrder":4806,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print",[7],"2000-1700",{"path":4808,"stem":4809,"title":4810,"authors":4811,"date":4463,"chapterOrder":4812,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono",[7],"2000-1800",{"path":4814,"stem":4815,"title":4816,"authors":4817,"date":4463,"chapterOrder":4818,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-bing-fa-shi-shen-me","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-并发是什么","并发是什么",[7],"2000-1900-0100",{"path":4820,"stem":4821,"title":4822,"authors":4823,"date":4463,"chapterOrder":4824,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-bing-xing-shi-shen-me","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-并行是什么","并行是什么",[7],"2000-1900-0200",{"path":4826,"stem":4827,"title":4828,"authors":4829,"date":4463,"chapterOrder":4830,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-xie-cheng-shi-shen-me","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-协程是什么","协程是什么",[7],"2000-1900-0300",{"path":4832,"stem":4833,"title":4834,"authors":4835,"date":4463,"chapterOrder":4836,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1000-bing-fa-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1000-并发编程","并发编程",[7],"2000-1900-1000",{"path":4838,"stem":4839,"title":4840,"authors":4841,"date":4463,"chapterOrder":4842,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1100-std-thread","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1100-std-thread","std::thread",[7],"2000-1900-1100",{"path":4844,"stem":4845,"title":4846,"authors":4847,"date":4463,"chapterOrder":4848,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1200-mutex-lock-guard","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1200-mutex-lock-guard","mutex 与 RAII 锁",[7],"2000-1900-1200",{"path":4850,"stem":4851,"title":4852,"authors":4853,"date":4463,"chapterOrder":4854,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1300-std-atomic","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1300-std-atomic","std::atomic",[7],"2000-1900-1300",{"path":4856,"stem":4857,"title":4858,"authors":4859,"date":4463,"chapterOrder":4860,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1400-condition-variable","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1400-condition-variable","condition_variable",[7],"2000-1900-1400",{"path":4862,"stem":4863,"title":4864,"authors":4865,"date":4463,"chapterOrder":4866,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1500-future-async-promise","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1500-future-async-promise","future、async、promise 与 packaged_task",[7],"2000-1900-1500",{"path":4868,"stem":4869,"title":4870,"authors":4871,"date":4463,"chapterOrder":4872,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1600-jthread-stop-token","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1600-jthread-stop-token","jthread 与 stop_token",[7],"2000-1900-1600",{"path":4874,"stem":4875,"title":4876,"authors":4877,"date":4463,"chapterOrder":4878,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-1700-semaphore-latch-barrier","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-1700-semaphore-latch-barrier","semaphore、latch 与 barrier",[7],"2000-1900-1700",{"path":4880,"stem":4881,"title":4882,"authors":4883,"date":4463,"chapterOrder":4884,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bing-xing-yu-xie-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发并行与协程","并发、并行与协程",[7],"2000-1900",{"path":4886,"stem":4887,"title":4888,"authors":4889,"date":4463,"chapterOrder":4890,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem",[7],"2000-2000",{"path":4892,"stem":4893,"title":4894,"authors":4895,"date":4463,"chapterOrder":4896,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","modules 简介",[7],"2000-2100",{"path":4898,"stem":4899,"title":4900,"authors":4901,"date":4463,"chapterOrder":4902,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","现代C++",[7],"2000",{"path":4904,"stem":4905,"title":4906,"authors":4907,"date":4463,"chapterOrder":4908,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","定时器与异步 IO",[7],"2100-0100-0100",{"path":4910,"stem":4911,"title":4912,"authors":4913,"date":4463,"chapterOrder":4914,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio 基础",[7],"2100-0100-0200",{"path":4916,"stem":4917,"title":4918,"authors":4919,"date":4463,"chapterOrder":4920,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","串口通信教学",[7],"2100-0100-0300",{"path":4922,"stem":4923,"title":4924,"authors":4925,"date":4463,"chapterOrder":4926,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0350-chuan-kou-tong-xin-chuan-kou-bao-xie-yi-shi-li","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0350-串口通信串口包协议实例","串口通信串口包协议实例",[7],"2100-0100-0350",{"path":4928,"stem":4929,"title":4930,"authors":4931,"date":4463,"chapterOrder":4932,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP 通信",[7],"2100-0100-0400",{"path":4934,"stem":4935,"title":4936,"authors":4937,"date":4463,"chapterOrder":4938,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP 通信",[7],"2100-0100-0500",{"path":4940,"stem":4941,"title":4942,"authors":4943,"date":4463,"chapterOrder":4944,"chapterDepth":77,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成",[7],"2100-0100-0600",{"path":4946,"stem":4947,"title":4948,"authors":4949,"date":4463,"chapterOrder":4950,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio异步IO库",[7],"2100-0100",{"path":4952,"stem":4953,"title":4954,"authors":4955,"date":4463,"chapterOrder":4956,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen线性代数库",[7],"2100-0200",{"path":4958,"stem":4959,"title":4960,"authors":4961,"date":4463,"chapterOrder":4962,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV计算机视觉库",[7],"2100-0300",{"path":4964,"stem":4965,"title":4966,"authors":4967,"date":4463,"chapterOrder":4968,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL点云库",[7],"2100-0400",{"path":4970,"stem":4971,"title":4972,"authors":4973,"date":4463,"chapterOrder":4974,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus 李群李代数库",[7],"2100-0500",{"path":4976,"stem":4977,"title":4978,"authors":4979,"date":4463,"chapterOrder":4980,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用库学习",[7],"2100",{"path":4982,"stem":4983,"title":4984,"authors":4985,"date":4463,"chapterOrder":4986,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets与构建安装",[7],"2200-0100",{"path":4988,"stem":4989,"title":4990,"authors":4991,"date":4463,"chapterOrder":4992,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","顶层CMake与公共编译选项",[7],"2200-0200",{"path":4994,"stem":4995,"title":4996,"authors":4997,"date":4463,"chapterOrder":4998,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","src与lib模块CMake详解",[7],"2200-0300",{"path":5000,"stem":5001,"title":5002,"authors":5003,"date":4463,"chapterOrder":5004,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","第三方库依赖写法",[7],"2200-0400",{"path":5006,"stem":5007,"title":5008,"authors":5009,"date":4463,"chapterOrder":5010,"chapterDepth":66,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","模板扩展与常见问题",[7],"2200-0500",{"path":5012,"stem":5013,"title":5014,"authors":5015,"date":4463,"chapterOrder":5016,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":4468},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板",[7],"2200",{"path":4465,"stem":5018,"title":5019,"authors":5020,"date":4463,"chapterOrder":5021,"chapterDepth":4481,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":158,"isWikiIndex":158},"wiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",[7],null,[5023,5025,5028,5031],{"name":7,"image":5024},"\u002Fimages\u002Fmember_photo\u002F董佳辉.jpg",{"name":5026,"image":5027},"宫金良","\u002Fimages\u002Fmember_photo\u002F宫金良.jpg",{"name":5029,"image":5030},"巩丽","\u002Fimages\u002Fmember_photo\u002F巩丽.png",{"name":5032,"image":5033},"张彦斐","\u002Fimages\u002Fmember_photo\u002F张彦斐.jpg",1792431896850]