[{"data":1,"prerenderedAt":4898},["ShallowReactive",2],{"wiki-page-\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai":3,"wiki-doc-items-\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai":4477,"language-switcher-data-\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai":4882,"wiki-i18n-paths-\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai":4897},{"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":4471,"locale":4472,"localeSlug":4473,"meta":4474,"navigation":156,"path":4460,"seo":4475,"sourcePath":4471,"sourceStem":4468,"stem":4468,"wikiDepth":64,"__hash__":4476},"content\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-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","1400-0600","2023-10-05","wiki\u002F2023-10-05-cplusplus-jiao-xue","zh-cn:2023-10-05-cplusplus-jiao-xue","\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态",false,null,"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","zh-CN","zh-cn",{},{"title":5,"description":56},"vLJahQB9qe9DnWQlGQwHLgnvPHq2XMxdY5KgN8Awxvw",[4478,4484,4489,4494,4499,4504,4509,4514,4519,4524,4529,4534,4539,4544,4549,4554,4559,4564,4569,4570,4575,4580,4585,4590,4595,4600,4605,4610,4615,4620,4625,4630,4635,4640,4645,4650,4655,4660,4665,4670,4674,4679,4684,4689,4694,4699,4704,4709,4714,4719,4724,4729,4734,4739,4744,4749,4754,4759,4764,4769,4774,4779,4784,4789,4794,4799,4804,4809,4814,4819,4824,4829,4834,4839,4844,4849,4854,4859,4864,4869,4874,4879],{"path":4479,"stem":4480,"title":4481,"date":4462,"chapterOrder":4482,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++开发环境搭建与测试","0100",0,{"path":4485,"stem":4486,"title":4487,"date":4462,"chapterOrder":4488,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基础初识","0200",{"path":4490,"stem":4491,"title":4492,"date":4462,"chapterOrder":4493,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","数据类型与数据存放","0300",{"path":4495,"stem":4496,"title":4497,"date":4462,"chapterOrder":4498,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","输入输出","0400",{"path":4500,"stem":4501,"title":4502,"date":4462,"chapterOrder":4503,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","wiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","运算符","0500",{"path":4505,"stem":4506,"title":4507,"date":4462,"chapterOrder":4508,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","wiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程结构","0600",{"path":4510,"stem":4511,"title":4512,"date":4462,"chapterOrder":4513,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","wiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","数组","0700",{"path":4515,"stem":4516,"title":4517,"date":4462,"chapterOrder":4518,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函数与头文件","0800",{"path":4520,"stem":4521,"title":4522,"date":4462,"chapterOrder":4523,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指针","0900",{"path":4525,"stem":4526,"title":4527,"date":4462,"chapterOrder":4528,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","结构体与共用体","1000",{"path":4530,"stem":4531,"title":4532,"date":4462,"chapterOrder":4533,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","内存分区与生命周期","1100",{"path":4535,"stem":4536,"title":4537,"date":4462,"chapterOrder":4538,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","wiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用","1200",{"path":4540,"stem":4541,"title":4542,"date":4462,"chapterOrder":4543,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","函数提高与命名空间","1300",{"path":4545,"stem":4546,"title":4547,"date":4462,"chapterOrder":4548,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封装","1400-0100",{"path":4550,"stem":4551,"title":4552,"date":4462,"chapterOrder":4553,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","对象初始化和清理","1400-0200",{"path":4555,"stem":4556,"title":4557,"date":4462,"chapterOrder":4558,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","对象模型与this指针","1400-0300",{"path":4560,"stem":4561,"title":4562,"date":4462,"chapterOrder":4563,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","友元与运算符重载","1400-0400",{"path":4565,"stem":4566,"title":4567,"date":4462,"chapterOrder":4568,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","继承","1400-0500",{"path":4460,"stem":4468,"title":5,"date":4462,"chapterOrder":4461,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},{"path":4571,"stem":4572,"title":4573,"date":4462,"chapterOrder":4574,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","类和对象","1400",{"path":4576,"stem":4577,"title":4578,"date":4462,"chapterOrder":4579,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","wiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作","1500",{"path":4581,"stem":4582,"title":4583,"date":4462,"chapterOrder":4584,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","wiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":4586,"stem":4587,"title":4588,"date":4462,"chapterOrder":4589,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板","1700",{"path":4591,"stem":4592,"title":4593,"date":4462,"chapterOrder":4594,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初识","1800-0100",{"path":4596,"stem":4597,"title":4598,"date":4462,"chapterOrder":4599,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":4601,"stem":4602,"title":4603,"date":4462,"chapterOrder":4604,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器","1800-0300",{"path":4606,"stem":4607,"title":4608,"date":4462,"chapterOrder":4609,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":4611,"stem":4612,"title":4613,"date":4462,"chapterOrder":4614,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":4616,"stem":4617,"title":4618,"date":4462,"chapterOrder":4619,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":4621,"stem":4622,"title":4623,"date":4462,"chapterOrder":4624,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue 容器","1800-0700",{"path":4626,"stem":4627,"title":4628,"date":4462,"chapterOrder":4629,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":4631,"stem":4632,"title":4633,"date":4462,"chapterOrder":4634,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":4636,"stem":4637,"title":4638,"date":4462,"chapterOrder":4639,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":4641,"stem":4642,"title":4643,"date":4462,"chapterOrder":4644,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","函数对象与谓词","1800-1100",{"path":4646,"stem":4647,"title":4648,"date":4462,"chapterOrder":4649,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","常用算法","1800-1200",{"path":4651,"stem":4652,"title":4653,"date":4462,"chapterOrder":4654,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高编程","1800",{"path":4656,"stem":4657,"title":4658,"date":4462,"chapterOrder":4659,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++类型转换","1900",{"path":4661,"stem":4662,"title":4663,"date":4462,"chapterOrder":4664,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto","2000-0100",{"path":4666,"stem":4667,"title":4668,"date":4462,"chapterOrder":4669,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":4671,"stem":4672,"title":3163,"date":4462,"chapterOrder":4673,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","2000-0300",{"path":4675,"stem":4676,"title":4677,"date":4462,"chapterOrder":4678,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":4680,"stem":4681,"title":4682,"date":4462,"chapterOrder":4683,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","范围 for 循环","2000-0500",{"path":4685,"stem":4686,"title":4687,"date":4462,"chapterOrder":4688,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","结构化绑定","2000-0600",{"path":4690,"stem":4691,"title":4692,"date":4462,"chapterOrder":4693,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":4695,"stem":4696,"title":4697,"date":4462,"chapterOrder":4698,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":4700,"stem":4701,"title":4702,"date":4462,"chapterOrder":4703,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指针","2000-0900",{"path":4705,"stem":4706,"title":4707,"date":4462,"chapterOrder":4708,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","右值引用和移动语义","2000-1000",{"path":4710,"stem":4711,"title":4712,"date":4462,"chapterOrder":4713,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda 表达式","2000-1100",{"path":4715,"stem":4716,"title":4717,"date":4462,"chapterOrder":4718,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":4720,"stem":4721,"title":4722,"date":4462,"chapterOrder":4723,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":4725,"stem":4726,"title":4727,"date":4462,"chapterOrder":4728,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":4730,"stem":4731,"title":4732,"date":4462,"chapterOrder":4733,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":4735,"stem":4736,"title":4737,"date":4462,"chapterOrder":4738,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":4740,"stem":4741,"title":4742,"date":4462,"chapterOrder":4743,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":4745,"stem":4746,"title":4747,"date":4462,"chapterOrder":4748,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":4750,"stem":4751,"title":4752,"date":4462,"chapterOrder":4753,"chapterDepth":75,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread 与 join","2000-1900-0100",{"path":4755,"stem":4756,"title":4757,"date":4462,"chapterOrder":4758,"chapterDepth":75,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 与 lock_guard","2000-1900-0200",{"path":4760,"stem":4761,"title":4762,"date":4462,"chapterOrder":4763,"chapterDepth":75,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":4765,"stem":4766,"title":4767,"date":4462,"chapterOrder":4768,"chapterDepth":75,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":4770,"stem":4771,"title":4772,"date":4462,"chapterOrder":4773,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","并发编程","2000-1900",{"path":4775,"stem":4776,"title":4777,"date":4462,"chapterOrder":4778,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":4780,"stem":4781,"title":4782,"date":4462,"chapterOrder":4783,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","modules 简介","2000-2100",{"path":4785,"stem":4786,"title":4787,"date":4462,"chapterOrder":4788,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","现代C++","2000",{"path":4790,"stem":4791,"title":4792,"date":4462,"chapterOrder":4793,"chapterDepth":75,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","定时器与异步 IO","2100-0100-0100",{"path":4795,"stem":4796,"title":4797,"date":4462,"chapterOrder":4798,"chapterDepth":75,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio 基础","2100-0100-0200",{"path":4800,"stem":4801,"title":4802,"date":4462,"chapterOrder":4803,"chapterDepth":75,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","串口通信","2100-0100-0300",{"path":4805,"stem":4806,"title":4807,"date":4462,"chapterOrder":4808,"chapterDepth":75,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP 通信","2100-0100-0400",{"path":4810,"stem":4811,"title":4812,"date":4462,"chapterOrder":4813,"chapterDepth":75,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP 通信","2100-0100-0500",{"path":4815,"stem":4816,"title":4817,"date":4462,"chapterOrder":4818,"chapterDepth":75,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成","2100-0100-0600",{"path":4820,"stem":4821,"title":4822,"date":4462,"chapterOrder":4823,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio异步IO库","2100-0100",{"path":4825,"stem":4826,"title":4827,"date":4462,"chapterOrder":4828,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen线性代数库","2100-0200",{"path":4830,"stem":4831,"title":4832,"date":4462,"chapterOrder":4833,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV计算机视觉库","2100-0300",{"path":4835,"stem":4836,"title":4837,"date":4462,"chapterOrder":4838,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL点云库","2100-0400",{"path":4840,"stem":4841,"title":4842,"date":4462,"chapterOrder":4843,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus 李群李代数库","2100-0500",{"path":4845,"stem":4846,"title":4847,"date":4462,"chapterOrder":4848,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用库学习","2100",{"path":4850,"stem":4851,"title":4852,"date":4462,"chapterOrder":4853,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets与构建安装","2200-0100",{"path":4855,"stem":4856,"title":4857,"date":4462,"chapterOrder":4858,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","顶层CMake与公共编译选项","2200-0200",{"path":4860,"stem":4861,"title":4862,"date":4462,"chapterOrder":4863,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","src与lib模块CMake详解","2200-0300",{"path":4865,"stem":4866,"title":4867,"date":4462,"chapterOrder":4868,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","第三方库依赖写法","2200-0400",{"path":4870,"stem":4871,"title":4872,"date":4462,"chapterOrder":4873,"chapterDepth":64,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","模板扩展与常见问题","2200-0500",{"path":4875,"stem":4876,"title":4877,"date":4462,"chapterOrder":4878,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":4469},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板","2200",{"path":4465,"stem":4880,"title":4881,"date":4462,"chapterOrder":4470,"chapterDepth":4483,"docKey":4464,"docRoot":4465,"docTitle":4466,"isWikiDoc":156,"isWikiIndex":156},"wiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",{"variants":4883},[4884,4887,4890,4893,4896],{"path":4885,"localeSlug":4886,"i18nKey":4468},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","en-us",{"path":4888,"localeSlug":4889,"i18nKey":4468},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","zh-hant",{"path":4891,"localeSlug":4892,"i18nKey":4468},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","zh-hk",{"path":4894,"localeSlug":4895,"i18nKey":4468},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","zh-tw",{"path":4460,"localeSlug":4473,"i18nKey":4468},[4885,4471,4888,4471,4891,4471,4894,4471,4460,4471],1784646782938]