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