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