[{"data":1,"prerenderedAt":9407},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban":8988,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban":9391,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban":9406},{"id":4,"title":5,"body":6,"canonicalPath":8969,"chapterDepth":8970,"chapterOrder":8971,"date":8972,"description":123,"docI18nKey":8973,"docKey":8974,"docRoot":8975,"docTitle":8976,"extension":8977,"i18nKey":8978,"isBlogPost":8979,"isWikiDoc":193,"isWikiIndex":8979,"layout":8980,"legacyPath":8980,"locale":8981,"localeSlug":8982,"meta":8983,"navigation":193,"path":8969,"seo":8984,"sourcePath":8985,"sourceStem":8978,"stem":8986,"wikiDepth":131,"__hash__":8987},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板.md","template",{"type":7,"value":8,"toc":8962},"minimark",[9,12,17,30,33,36,43,46,52,58,61,71,75,97,102,105,112,117,155,165,170,173,176,179,184,662,666,674,677,688,692,697,705,709,1017,1021,1027,1029,1034,1038,1041,1061,1063,1719,1724,1730,1733,1737,1740,1745,1756,1760,2027,2031,2037,2040,2044,2047,2062,2066,2445,2449,2455,2458,2462,2467,2472,2477,2535,2541,2544,2547,2604,2610,2613,2616,2620,3293,3297,3303,3305,3313,3317,3321,3324,3332,3336,3358,3364,3368,3370,3372,3374,3378,3649,3653,3659,3662,3666,3669,3677,3681,4020,4024,4030,4032,4040,4044,4047,4055,4059,4353,4357,4363,4366,4370,4373,4378,4381,4392,4396,5015,5019,5025,5027,5035,5039,5042,5053,5059,5096,5099,5142,5145,5164,5168,5466,5470,5476,5479,5483,5486,5490,5841,5845,5851,5854,5858,5886,5889,5891,5896,5899,5904,5907,5915,5919,5926,6160,6418,6424,6427,6571,6580,6583,6587,6589,6594,6597,6600,6604,7124,7128,7134,7137,7141,7144,7175,7179,7182,8076,8082,8085,8941,8953,8955,8958],[10,11,5],"h2",{"id":5},[13,14,16],"h3",{"id":15},"the-concept-of-a-template","The concept of a template",[18,19,20,21,25,26,29],"p",{},"A template establishes a ",[22,23,24],"strong",{},"general mold",", greatly ",[22,27,28],{},"improving reusability",".",[18,31,32],{},"For example, templates in daily life",[18,34,35],{},"One-inch photo template:",[18,37,38],{},[39,40],"img",{"alt":41,"src":42},"1547105026929","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002Fstage5-1547105026929-05f23198cb.webp",[18,44,45],{},"PowerPoint template:",[18,47,48],{},[39,49],{"alt":50,"src":51},"1547103297864","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002Fstage5-1547103297864-abb466b989.webp",[18,53,54],{},[39,55],{"alt":56,"src":57},"1547103359158","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F10\u002F05\u002Fstage5-1547103359158-05f932a647.webp",[18,59,60],{},"Features of the template:",[62,63,64,68],"ul",{},[65,66,67],"li",{},"The template cannot be used directly; it is only a framework.",[65,69,70],{},"Templates are generally applicable, but not universal.",[13,72,74],{"id":73},"function-template","function template",[62,76,77,87],{},[65,78,79,80,83,84,29],{},"Another programming concept in C++ is called ",[22,81,82],{},"generic programming",", which primarily leverages ",[22,85,86],{},"templates",[65,88,89,90,93,94,29],{},"C++ provides two template mechanisms: ",[22,91,92],{},"function templates"," and ",[22,95,96],{},"class templates",[98,99,101],"h4",{"id":100},"function-template-syntax","Function template syntax",[18,103,104],{},"Function template purpose:",[18,106,107,108,111],{},"Create a generic function where the return type and parameter types do not need to be explicitly specified, using a ",[22,109,110],{},"virtual type"," to represent them.",[18,113,114],{},[22,115,116],{},"Syntax:",[118,119,124],"pre",{"className":120,"code":121,"language":122,"meta":123,"style":123},"language-cpp shiki shiki-themes github-light github-dark","template\u003Ctypename T>\n函数声明或定义\n","cpp","",[125,126,127,149],"code",{"__ignoreMap":123},[128,129,132,135,139,142,146],"span",{"class":130,"line":131},"line",1,[128,133,5],{"class":134},"szBVR",[128,136,138],{"class":137},"sVt8B","\u003C",[128,140,141],{"class":134},"typename",[128,143,145],{"class":144},"sScJk"," T",[128,147,148],{"class":137},">\n",[128,150,152],{"class":130,"line":151},2,[128,153,154],{"class":137},"函数声明或定义\n",[18,156,157,160,161,164],{},[22,158,159],{},"运行结果："," 此代码块不含 ",[125,162,163],{},"main"," 函数，是语法、接口或分文件示例，不能独立运行，因此没有终端输出。",[18,166,167],{},[22,168,169],{},"Explanation:",[18,171,172],{},"template --- Declare Template Creation",[18,174,175],{},"typename --- indicates that the subsequent symbol is a data type and can be replaced with class",[18,177,178],{},"T --- Generic data type; the name can be substituted, typically uppercase letters",[18,180,181],{},[22,182,183],{},"Example:",[118,185,187],{"className":120,"code":186,"language":122,"meta":123,"style":123},"\n\u002F\u002F交换整型函数\nvoid swapInt(int& a, int& b) {\n    int temp = a;\n    a = b;\n    b = temp;\n}\n\n\u002F\u002F交换浮点型函数\nvoid swapDouble(double& a, double& b) {\n    double temp = a;\n    a = b;\n    b = temp;\n}\n\n\u002F\u002F利用模板提供通用的交换函数\ntemplate\u003Ctypename T>\nvoid mySwap(T& a, T& b)\n{\n    T temp = a;\n    a = b;\n    b = temp;\n}\n\nvoid test01()\n{\n    int a = 10;\n    int b = 20;\n    \n    \u002F\u002FswapInt(a, b);\n\n    \u002F\u002F利用模板实现交换\n    \u002F\u002F1、自动类型推导\n    mySwap(a, b);\n\n    \u002F\u002F2、显示指定类型\n    mySwap\u003Cint>(a, b);\n\n    cout \u003C\u003C \"a = \" \u003C\u003C a \u003C\u003C endl;\n    cout \u003C\u003C \"b = \" \u003C\u003C b \u003C\u003C endl;\n\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[125,188,189,195,201,231,246,257,268,274,279,285,308,320,329,338,343,348,354,367,396,402,412,421,430,435,440,451,456,473,488,494,500,505,511,517,526,531,537,550,555,578,596,601,606,611,622,627,636,641,646,657],{"__ignoreMap":123},[128,190,191],{"class":130,"line":131},[128,192,194],{"emptyLinePlaceholder":193},true,"\n",[128,196,197],{"class":130,"line":151},[128,198,200],{"class":199},"sJ8bj","\u002F\u002F交换整型函数\n",[128,202,204,207,210,213,216,220,223,225,228],{"class":130,"line":203},3,[128,205,206],{"class":134},"void",[128,208,209],{"class":144}," swapInt",[128,211,212],{"class":137},"(",[128,214,215],{"class":134},"int&",[128,217,219],{"class":218},"s4XuR"," a",[128,221,222],{"class":137},", ",[128,224,215],{"class":134},[128,226,227],{"class":218}," b",[128,229,230],{"class":137},") {\n",[128,232,234,237,240,243],{"class":130,"line":233},4,[128,235,236],{"class":134},"    int",[128,238,239],{"class":137}," temp ",[128,241,242],{"class":134},"=",[128,244,245],{"class":137}," a;\n",[128,247,249,252,254],{"class":130,"line":248},5,[128,250,251],{"class":137},"    a ",[128,253,242],{"class":134},[128,255,256],{"class":137}," b;\n",[128,258,260,263,265],{"class":130,"line":259},6,[128,261,262],{"class":137},"    b ",[128,264,242],{"class":134},[128,266,267],{"class":137}," temp;\n",[128,269,271],{"class":130,"line":270},7,[128,272,273],{"class":137},"}\n",[128,275,277],{"class":130,"line":276},8,[128,278,194],{"emptyLinePlaceholder":193},[128,280,282],{"class":130,"line":281},9,[128,283,284],{"class":199},"\u002F\u002F交换浮点型函数\n",[128,286,288,290,293,295,298,300,302,304,306],{"class":130,"line":287},10,[128,289,206],{"class":134},[128,291,292],{"class":144}," swapDouble",[128,294,212],{"class":137},[128,296,297],{"class":134},"double&",[128,299,219],{"class":218},[128,301,222],{"class":137},[128,303,297],{"class":134},[128,305,227],{"class":218},[128,307,230],{"class":137},[128,309,311,314,316,318],{"class":130,"line":310},11,[128,312,313],{"class":134},"    double",[128,315,239],{"class":137},[128,317,242],{"class":134},[128,319,245],{"class":137},[128,321,323,325,327],{"class":130,"line":322},12,[128,324,251],{"class":137},[128,326,242],{"class":134},[128,328,256],{"class":137},[128,330,332,334,336],{"class":130,"line":331},13,[128,333,262],{"class":137},[128,335,242],{"class":134},[128,337,267],{"class":137},[128,339,341],{"class":130,"line":340},14,[128,342,273],{"class":137},[128,344,346],{"class":130,"line":345},15,[128,347,194],{"emptyLinePlaceholder":193},[128,349,351],{"class":130,"line":350},16,[128,352,353],{"class":199},"\u002F\u002F利用模板提供通用的交换函数\n",[128,355,357,359,361,363,365],{"class":130,"line":356},17,[128,358,5],{"class":134},[128,360,138],{"class":137},[128,362,141],{"class":134},[128,364,145],{"class":144},[128,366,148],{"class":137},[128,368,370,372,375,377,380,383,385,387,389,391,393],{"class":130,"line":369},18,[128,371,206],{"class":134},[128,373,374],{"class":144}," mySwap",[128,376,212],{"class":137},[128,378,379],{"class":144},"T",[128,381,382],{"class":134},"&",[128,384,219],{"class":218},[128,386,222],{"class":137},[128,388,379],{"class":144},[128,390,382],{"class":134},[128,392,227],{"class":218},[128,394,395],{"class":137},")\n",[128,397,399],{"class":130,"line":398},19,[128,400,401],{"class":137},"{\n",[128,403,405,408,410],{"class":130,"line":404},20,[128,406,407],{"class":137},"    T temp ",[128,409,242],{"class":134},[128,411,245],{"class":137},[128,413,415,417,419],{"class":130,"line":414},21,[128,416,251],{"class":137},[128,418,242],{"class":134},[128,420,256],{"class":137},[128,422,424,426,428],{"class":130,"line":423},22,[128,425,262],{"class":137},[128,427,242],{"class":134},[128,429,267],{"class":137},[128,431,433],{"class":130,"line":432},23,[128,434,273],{"class":137},[128,436,438],{"class":130,"line":437},24,[128,439,194],{"emptyLinePlaceholder":193},[128,441,443,445,448],{"class":130,"line":442},25,[128,444,206],{"class":134},[128,446,447],{"class":144}," test01",[128,449,450],{"class":137},"()\n",[128,452,454],{"class":130,"line":453},26,[128,455,401],{"class":137},[128,457,459,461,464,466,470],{"class":130,"line":458},27,[128,460,236],{"class":134},[128,462,463],{"class":137}," a ",[128,465,242],{"class":134},[128,467,469],{"class":468},"sj4cs"," 10",[128,471,472],{"class":137},";\n",[128,474,476,478,481,483,486],{"class":130,"line":475},28,[128,477,236],{"class":134},[128,479,480],{"class":137}," b ",[128,482,242],{"class":134},[128,484,485],{"class":468}," 20",[128,487,472],{"class":137},[128,489,491],{"class":130,"line":490},29,[128,492,493],{"class":137},"    \n",[128,495,497],{"class":130,"line":496},30,[128,498,499],{"class":199},"    \u002F\u002FswapInt(a, b);\n",[128,501,503],{"class":130,"line":502},31,[128,504,194],{"emptyLinePlaceholder":193},[128,506,508],{"class":130,"line":507},32,[128,509,510],{"class":199},"    \u002F\u002F利用模板实现交换\n",[128,512,514],{"class":130,"line":513},33,[128,515,516],{"class":199},"    \u002F\u002F1、自动类型推导\n",[128,518,520,523],{"class":130,"line":519},34,[128,521,522],{"class":144},"    mySwap",[128,524,525],{"class":137},"(a, b);\n",[128,527,529],{"class":130,"line":528},35,[128,530,194],{"emptyLinePlaceholder":193},[128,532,534],{"class":130,"line":533},36,[128,535,536],{"class":199},"    \u002F\u002F2、显示指定类型\n",[128,538,540,542,544,547],{"class":130,"line":539},37,[128,541,522],{"class":144},[128,543,138],{"class":137},[128,545,546],{"class":134},"int",[128,548,549],{"class":137},">(a, b);\n",[128,551,553],{"class":130,"line":552},38,[128,554,194],{"emptyLinePlaceholder":193},[128,556,558,561,564,568,571,573,575],{"class":130,"line":557},39,[128,559,560],{"class":137},"    cout ",[128,562,563],{"class":134},"\u003C\u003C",[128,565,567],{"class":566},"sZZnC"," \"a = \"",[128,569,570],{"class":134}," \u003C\u003C",[128,572,463],{"class":137},[128,574,563],{"class":134},[128,576,577],{"class":137}," endl;\n",[128,579,581,583,585,588,590,592,594],{"class":130,"line":580},40,[128,582,560],{"class":137},[128,584,563],{"class":134},[128,586,587],{"class":566}," \"b = \"",[128,589,570],{"class":134},[128,591,480],{"class":137},[128,593,563],{"class":134},[128,595,577],{"class":137},[128,597,599],{"class":130,"line":598},41,[128,600,194],{"emptyLinePlaceholder":193},[128,602,604],{"class":130,"line":603},42,[128,605,273],{"class":137},[128,607,609],{"class":130,"line":608},43,[128,610,194],{"emptyLinePlaceholder":193},[128,612,614,616,619],{"class":130,"line":613},44,[128,615,546],{"class":134},[128,617,618],{"class":144}," main",[128,620,621],{"class":137},"() {\n",[128,623,625],{"class":130,"line":624},45,[128,626,194],{"emptyLinePlaceholder":193},[128,628,630,633],{"class":130,"line":629},46,[128,631,632],{"class":144},"    test01",[128,634,635],{"class":137},"();\n",[128,637,639],{"class":130,"line":638},47,[128,640,194],{"emptyLinePlaceholder":193},[128,642,644],{"class":130,"line":643},48,[128,645,194],{"emptyLinePlaceholder":193},[128,647,649,652,655],{"class":130,"line":648},49,[128,650,651],{"class":134},"    return",[128,653,654],{"class":468}," 0",[128,656,472],{"class":137},[128,658,660],{"class":130,"line":659},50,[128,661,273],{"class":137},[18,663,664],{},[22,665,159],{},[118,667,672],{"className":668,"code":670,"language":671,"meta":123},[669],"language-text","a = 10\nb = 20\n","text",[125,673,670],{"__ignoreMap":123},[18,675,676],{},"Summary:",[62,678,679,682,685],{},[65,680,681],{},"Function templates utilize the keyword \"template\"",[65,683,684],{},"There are two ways to use function templates: automatic type deduction and explicit type specification.",[65,686,687],{},"The purpose of templates is to enhance reusability by parameterizing types.",[98,689,691],{"id":690},"function-template-considerations-syntax-type-deduction-specialization-and-potential-pitfalls","Function template considerations: syntax, type deduction, specialization, and potential pitfalls.",[18,693,694],{},[22,695,696],{},"Notes:",[62,698,699,702],{},[65,700,701],{},"Automatic type deduction must resolve to a consistent data type T before use.",[65,703,704],{},"Templates must have the data type of T specified to be used.",[18,706,707],{},[22,708,183],{},[118,710,712],{"className":120,"code":711,"language":122,"meta":123,"style":123},"\u002F\u002F利用模板提供通用的交换函数\ntemplate\u003Cclass T>\nvoid mySwap(T& a, T& b)\n{\n    T temp = a;\n    a = b;\n    b = temp;\n}\n\n\u002F\u002F 1、自动类型推导，必须推导出一致的数据类型T,才可以使用\nvoid test01()\n{\n    int a = 10;\n    int b = 20;\n    char c = 'c';\n\n    mySwap(a, b); \u002F\u002F 正确，可以推导出一致的T\n    \u002F\u002FmySwap(a, c); \u002F\u002F 错误，推导不出一致的T类型\n}\n\n\u002F\u002F 2、模板必须要确定出T的数据类型，才可以使用\ntemplate\u003Cclass T>\nvoid func()\n{\n    cout \u003C\u003C \"func 调用\" \u003C\u003C endl;\n}\n\nvoid test02()\n{\n    \u002F\u002Ffunc(); \u002F\u002F错误，模板不能独立使用，必须确定出T的类型\n    func\u003Cint>(); \u002F\u002F利用显示指定类型的方式，给T一个类型，才可以使用该模板\n}\n\nint main() {\n\n    test01();\n    test02();\n\n\n    return 0;\n}\n",[125,713,714,718,731,755,759,767,775,783,787,791,796,804,808,820,832,847,851,861,869,873,877,882,894,903,907,920,924,928,937,941,949,964,968,972,980,984,990,997,1001,1005,1013],{"__ignoreMap":123},[128,715,716],{"class":130,"line":131},[128,717,353],{"class":199},[128,719,720,722,724,727,729],{"class":130,"line":151},[128,721,5],{"class":134},[128,723,138],{"class":137},[128,725,726],{"class":134},"class",[128,728,145],{"class":144},[128,730,148],{"class":137},[128,732,733,735,737,739,741,743,745,747,749,751,753],{"class":130,"line":203},[128,734,206],{"class":134},[128,736,374],{"class":144},[128,738,212],{"class":137},[128,740,379],{"class":144},[128,742,382],{"class":134},[128,744,219],{"class":218},[128,746,222],{"class":137},[128,748,379],{"class":144},[128,750,382],{"class":134},[128,752,227],{"class":218},[128,754,395],{"class":137},[128,756,757],{"class":130,"line":233},[128,758,401],{"class":137},[128,760,761,763,765],{"class":130,"line":248},[128,762,407],{"class":137},[128,764,242],{"class":134},[128,766,245],{"class":137},[128,768,769,771,773],{"class":130,"line":259},[128,770,251],{"class":137},[128,772,242],{"class":134},[128,774,256],{"class":137},[128,776,777,779,781],{"class":130,"line":270},[128,778,262],{"class":137},[128,780,242],{"class":134},[128,782,267],{"class":137},[128,784,785],{"class":130,"line":276},[128,786,273],{"class":137},[128,788,789],{"class":130,"line":281},[128,790,194],{"emptyLinePlaceholder":193},[128,792,793],{"class":130,"line":287},[128,794,795],{"class":199},"\u002F\u002F 1、自动类型推导，必须推导出一致的数据类型T,才可以使用\n",[128,797,798,800,802],{"class":130,"line":310},[128,799,206],{"class":134},[128,801,447],{"class":144},[128,803,450],{"class":137},[128,805,806],{"class":130,"line":322},[128,807,401],{"class":137},[128,809,810,812,814,816,818],{"class":130,"line":331},[128,811,236],{"class":134},[128,813,463],{"class":137},[128,815,242],{"class":134},[128,817,469],{"class":468},[128,819,472],{"class":137},[128,821,822,824,826,828,830],{"class":130,"line":340},[128,823,236],{"class":134},[128,825,480],{"class":137},[128,827,242],{"class":134},[128,829,485],{"class":468},[128,831,472],{"class":137},[128,833,834,837,840,842,845],{"class":130,"line":345},[128,835,836],{"class":134},"    char",[128,838,839],{"class":137}," c ",[128,841,242],{"class":134},[128,843,844],{"class":566}," 'c'",[128,846,472],{"class":137},[128,848,849],{"class":130,"line":350},[128,850,194],{"emptyLinePlaceholder":193},[128,852,853,855,858],{"class":130,"line":356},[128,854,522],{"class":144},[128,856,857],{"class":137},"(a, b);",[128,859,860],{"class":199}," \u002F\u002F 正确，可以推导出一致的T\n",[128,862,863,866],{"class":130,"line":369},[128,864,865],{"class":199},"    \u002F\u002FmySwap(a, c);",[128,867,868],{"class":199}," \u002F\u002F 错误，推导不出一致的T类型\n",[128,870,871],{"class":130,"line":398},[128,872,273],{"class":137},[128,874,875],{"class":130,"line":404},[128,876,194],{"emptyLinePlaceholder":193},[128,878,879],{"class":130,"line":414},[128,880,881],{"class":199},"\u002F\u002F 2、模板必须要确定出T的数据类型，才可以使用\n",[128,883,884,886,888,890,892],{"class":130,"line":423},[128,885,5],{"class":134},[128,887,138],{"class":137},[128,889,726],{"class":134},[128,891,145],{"class":144},[128,893,148],{"class":137},[128,895,896,898,901],{"class":130,"line":432},[128,897,206],{"class":134},[128,899,900],{"class":144}," func",[128,902,450],{"class":137},[128,904,905],{"class":130,"line":437},[128,906,401],{"class":137},[128,908,909,911,913,916,918],{"class":130,"line":442},[128,910,560],{"class":137},[128,912,563],{"class":134},[128,914,915],{"class":566}," \"func 调用\"",[128,917,570],{"class":134},[128,919,577],{"class":137},[128,921,922],{"class":130,"line":453},[128,923,273],{"class":137},[128,925,926],{"class":130,"line":458},[128,927,194],{"emptyLinePlaceholder":193},[128,929,930,932,935],{"class":130,"line":475},[128,931,206],{"class":134},[128,933,934],{"class":144}," test02",[128,936,450],{"class":137},[128,938,939],{"class":130,"line":490},[128,940,401],{"class":137},[128,942,943,946],{"class":130,"line":496},[128,944,945],{"class":199},"    \u002F\u002Ffunc();",[128,947,948],{"class":199}," \u002F\u002F错误，模板不能独立使用，必须确定出T的类型\n",[128,950,951,954,956,958,961],{"class":130,"line":502},[128,952,953],{"class":144},"    func",[128,955,138],{"class":137},[128,957,546],{"class":134},[128,959,960],{"class":137},">();",[128,962,963],{"class":199}," \u002F\u002F利用显示指定类型的方式，给T一个类型，才可以使用该模板\n",[128,965,966],{"class":130,"line":507},[128,967,273],{"class":137},[128,969,970],{"class":130,"line":513},[128,971,194],{"emptyLinePlaceholder":193},[128,973,974,976,978],{"class":130,"line":519},[128,975,546],{"class":134},[128,977,618],{"class":144},[128,979,621],{"class":137},[128,981,982],{"class":130,"line":528},[128,983,194],{"emptyLinePlaceholder":193},[128,985,986,988],{"class":130,"line":533},[128,987,632],{"class":144},[128,989,635],{"class":137},[128,991,992,995],{"class":130,"line":539},[128,993,994],{"class":144},"    test02",[128,996,635],{"class":137},[128,998,999],{"class":130,"line":552},[128,1000,194],{"emptyLinePlaceholder":193},[128,1002,1003],{"class":130,"line":557},[128,1004,194],{"emptyLinePlaceholder":193},[128,1006,1007,1009,1011],{"class":130,"line":580},[128,1008,651],{"class":134},[128,1010,654],{"class":468},[128,1012,472],{"class":137},[128,1014,1015],{"class":130,"line":598},[128,1016,273],{"class":137},[18,1018,1019],{},[22,1020,159],{},[118,1022,1025],{"className":1023,"code":1024,"language":671,"meta":123},[669],"func 调用\n",[125,1026,1024],{"__ignoreMap":123},[18,1028,676],{},[62,1030,1031],{},[65,1032,1033],{},"When using templates, you must determine the generic data type T and be able to deduce a consistent type.",[98,1035,1037],{"id":1036},"function-template-examples","Function Template Examples",[18,1039,1040],{},"Case description:",[62,1042,1043,1046,1052],{},[65,1044,1045],{},"Encapsulate a sorting function using function templates to sort arrays of different data types.",[65,1047,1048,1049,29],{},"Sorting rule from largest to smallest, sorting algorithm is ",[22,1050,1051],{},"selection sort",[65,1053,1054,1055,93,1058,29],{},"Testing separately using ",[22,1056,1057],{},"char arrays",[22,1059,1060],{},"int arrays",[18,1062,183],{},[118,1064,1066],{"className":120,"code":1065,"language":122,"meta":123,"style":123},"\u002F\u002F交换的函数模板\ntemplate\u003Ctypename T>\nvoid mySwap(T &a, T&b)\n{\n    T temp = a;\n    a = b;\n    b = temp;\n}\n\ntemplate\u003Cclass T> \u002F\u002F 也可以替换成typename\n\u002F\u002F利用选择排序，进行对数组从大到小的排序\nvoid mySort(T arr[], int len)\n{\n    for (int i = 0; i \u003C len; i++)\n    {\n        int max = i; \u002F\u002F最大数的下标\n        for (int j = i + 1; j \u003C len; j++)\n        {\n            if (arr[max] \u003C arr[j])\n            {\n                max = j;\n            }\n        }\n        if (max != i) \u002F\u002F如果最大数的下标不是i，交换两者\n        {\n            mySwap(arr[max], arr[i]);\n        }\n    }\n}\ntemplate\u003Ctypename T>\nvoid printArray(T arr[], int len) {\n\n    for (int i = 0; i \u003C len; i++) {\n        cout \u003C\u003C arr[i] \u003C\u003C \" \";\n    }\n    cout \u003C\u003C endl;\n}\nvoid test01()\n{\n    \u002F\u002F测试char数组\n    char charArr[] = \"bdcfeagh\";\n    int num = sizeof(charArr) \u002F sizeof(char);\n    mySort(charArr, num);\n    printArray(charArr, num);\n}\n\nvoid test02()\n{\n    \u002F\u002F测试int数组\n    int intArr[] = { 7, 5, 8, 1, 3, 9, 2, 4, 6 };\n    int num = sizeof(intArr) \u002F sizeof(int);\n    mySort(intArr, num);\n    printArray(intArr, num);\n}\n\nint main() {\n\n    test01();\n    test02();\n\n\n    return 0;\n}\n",[125,1067,1068,1073,1085,1112,1116,1124,1132,1140,1144,1148,1164,1169,1193,1197,1227,1232,1248,1282,1287,1300,1305,1315,1320,1325,1342,1346,1354,1358,1363,1367,1379,1400,1404,1428,1445,1449,1457,1461,1469,1473,1478,1492,1520,1528,1535,1539,1543,1551,1555,1560,1618,1642,1650,1657,1662,1667,1676,1681,1688,1695,1700,1705,1714],{"__ignoreMap":123},[128,1069,1070],{"class":130,"line":131},[128,1071,1072],{"class":199},"\u002F\u002F交换的函数模板\n",[128,1074,1075,1077,1079,1081,1083],{"class":130,"line":151},[128,1076,5],{"class":134},[128,1078,138],{"class":137},[128,1080,141],{"class":134},[128,1082,145],{"class":144},[128,1084,148],{"class":137},[128,1086,1087,1089,1091,1093,1095,1098,1101,1103,1105,1107,1110],{"class":130,"line":203},[128,1088,206],{"class":134},[128,1090,374],{"class":144},[128,1092,212],{"class":137},[128,1094,379],{"class":144},[128,1096,1097],{"class":134}," &",[128,1099,1100],{"class":218},"a",[128,1102,222],{"class":137},[128,1104,379],{"class":144},[128,1106,382],{"class":134},[128,1108,1109],{"class":218},"b",[128,1111,395],{"class":137},[128,1113,1114],{"class":130,"line":233},[128,1115,401],{"class":137},[128,1117,1118,1120,1122],{"class":130,"line":248},[128,1119,407],{"class":137},[128,1121,242],{"class":134},[128,1123,245],{"class":137},[128,1125,1126,1128,1130],{"class":130,"line":259},[128,1127,251],{"class":137},[128,1129,242],{"class":134},[128,1131,256],{"class":137},[128,1133,1134,1136,1138],{"class":130,"line":270},[128,1135,262],{"class":137},[128,1137,242],{"class":134},[128,1139,267],{"class":137},[128,1141,1142],{"class":130,"line":276},[128,1143,273],{"class":137},[128,1145,1146],{"class":130,"line":281},[128,1147,194],{"emptyLinePlaceholder":193},[128,1149,1150,1152,1154,1156,1158,1161],{"class":130,"line":287},[128,1151,5],{"class":134},[128,1153,138],{"class":137},[128,1155,726],{"class":134},[128,1157,145],{"class":144},[128,1159,1160],{"class":137},">",[128,1162,1163],{"class":199}," \u002F\u002F 也可以替换成typename\n",[128,1165,1166],{"class":130,"line":310},[128,1167,1168],{"class":199},"\u002F\u002F利用选择排序，进行对数组从大到小的排序\n",[128,1170,1171,1173,1176,1178,1180,1183,1186,1188,1191],{"class":130,"line":322},[128,1172,206],{"class":134},[128,1174,1175],{"class":144}," mySort",[128,1177,212],{"class":137},[128,1179,379],{"class":144},[128,1181,1182],{"class":218}," arr",[128,1184,1185],{"class":137},"[], ",[128,1187,546],{"class":134},[128,1189,1190],{"class":218}," len",[128,1192,395],{"class":137},[128,1194,1195],{"class":130,"line":331},[128,1196,401],{"class":137},[128,1198,1199,1202,1205,1207,1210,1212,1214,1217,1219,1222,1225],{"class":130,"line":340},[128,1200,1201],{"class":134},"    for",[128,1203,1204],{"class":137}," (",[128,1206,546],{"class":134},[128,1208,1209],{"class":137}," i ",[128,1211,242],{"class":134},[128,1213,654],{"class":468},[128,1215,1216],{"class":137},"; i ",[128,1218,138],{"class":134},[128,1220,1221],{"class":137}," len; i",[128,1223,1224],{"class":134},"++",[128,1226,395],{"class":137},[128,1228,1229],{"class":130,"line":345},[128,1230,1231],{"class":137},"    {\n",[128,1233,1234,1237,1240,1242,1245],{"class":130,"line":350},[128,1235,1236],{"class":134},"        int",[128,1238,1239],{"class":137}," max ",[128,1241,242],{"class":134},[128,1243,1244],{"class":137}," i;",[128,1246,1247],{"class":199}," \u002F\u002F最大数的下标\n",[128,1249,1250,1253,1255,1257,1260,1262,1264,1267,1270,1273,1275,1278,1280],{"class":130,"line":356},[128,1251,1252],{"class":134},"        for",[128,1254,1204],{"class":137},[128,1256,546],{"class":134},[128,1258,1259],{"class":137}," j ",[128,1261,242],{"class":134},[128,1263,1209],{"class":137},[128,1265,1266],{"class":134},"+",[128,1268,1269],{"class":468}," 1",[128,1271,1272],{"class":137},"; j ",[128,1274,138],{"class":134},[128,1276,1277],{"class":137}," len; j",[128,1279,1224],{"class":134},[128,1281,395],{"class":137},[128,1283,1284],{"class":130,"line":369},[128,1285,1286],{"class":137},"        {\n",[128,1288,1289,1292,1295,1297],{"class":130,"line":398},[128,1290,1291],{"class":134},"            if",[128,1293,1294],{"class":137}," (arr[max] ",[128,1296,138],{"class":134},[128,1298,1299],{"class":137}," arr[j])\n",[128,1301,1302],{"class":130,"line":404},[128,1303,1304],{"class":137},"            {\n",[128,1306,1307,1310,1312],{"class":130,"line":414},[128,1308,1309],{"class":137},"                max ",[128,1311,242],{"class":134},[128,1313,1314],{"class":137}," j;\n",[128,1316,1317],{"class":130,"line":423},[128,1318,1319],{"class":137},"            }\n",[128,1321,1322],{"class":130,"line":432},[128,1323,1324],{"class":137},"        }\n",[128,1326,1327,1330,1333,1336,1339],{"class":130,"line":437},[128,1328,1329],{"class":134},"        if",[128,1331,1332],{"class":137}," (max ",[128,1334,1335],{"class":134},"!=",[128,1337,1338],{"class":137}," i)",[128,1340,1341],{"class":199}," \u002F\u002F如果最大数的下标不是i，交换两者\n",[128,1343,1344],{"class":130,"line":442},[128,1345,1286],{"class":137},[128,1347,1348,1351],{"class":130,"line":453},[128,1349,1350],{"class":144},"            mySwap",[128,1352,1353],{"class":137},"(arr[max], arr[i]);\n",[128,1355,1356],{"class":130,"line":458},[128,1357,1324],{"class":137},[128,1359,1360],{"class":130,"line":475},[128,1361,1362],{"class":137},"    }\n",[128,1364,1365],{"class":130,"line":490},[128,1366,273],{"class":137},[128,1368,1369,1371,1373,1375,1377],{"class":130,"line":496},[128,1370,5],{"class":134},[128,1372,138],{"class":137},[128,1374,141],{"class":134},[128,1376,145],{"class":144},[128,1378,148],{"class":137},[128,1380,1381,1383,1386,1388,1390,1392,1394,1396,1398],{"class":130,"line":502},[128,1382,206],{"class":134},[128,1384,1385],{"class":144}," printArray",[128,1387,212],{"class":137},[128,1389,379],{"class":144},[128,1391,1182],{"class":218},[128,1393,1185],{"class":137},[128,1395,546],{"class":134},[128,1397,1190],{"class":218},[128,1399,230],{"class":137},[128,1401,1402],{"class":130,"line":507},[128,1403,194],{"emptyLinePlaceholder":193},[128,1405,1406,1408,1410,1412,1414,1416,1418,1420,1422,1424,1426],{"class":130,"line":513},[128,1407,1201],{"class":134},[128,1409,1204],{"class":137},[128,1411,546],{"class":134},[128,1413,1209],{"class":137},[128,1415,242],{"class":134},[128,1417,654],{"class":468},[128,1419,1216],{"class":137},[128,1421,138],{"class":134},[128,1423,1221],{"class":137},[128,1425,1224],{"class":134},[128,1427,230],{"class":137},[128,1429,1430,1433,1435,1438,1440,1443],{"class":130,"line":519},[128,1431,1432],{"class":137},"        cout ",[128,1434,563],{"class":134},[128,1436,1437],{"class":137}," arr[i] ",[128,1439,563],{"class":134},[128,1441,1442],{"class":566}," \" \"",[128,1444,472],{"class":137},[128,1446,1447],{"class":130,"line":528},[128,1448,1362],{"class":137},[128,1450,1451,1453,1455],{"class":130,"line":533},[128,1452,560],{"class":137},[128,1454,563],{"class":134},[128,1456,577],{"class":137},[128,1458,1459],{"class":130,"line":539},[128,1460,273],{"class":137},[128,1462,1463,1465,1467],{"class":130,"line":552},[128,1464,206],{"class":134},[128,1466,447],{"class":144},[128,1468,450],{"class":137},[128,1470,1471],{"class":130,"line":557},[128,1472,401],{"class":137},[128,1474,1475],{"class":130,"line":580},[128,1476,1477],{"class":199},"    \u002F\u002F测试char数组\n",[128,1479,1480,1482,1485,1487,1490],{"class":130,"line":598},[128,1481,836],{"class":134},[128,1483,1484],{"class":137}," charArr[] ",[128,1486,242],{"class":134},[128,1488,1489],{"class":566}," \"bdcfeagh\"",[128,1491,472],{"class":137},[128,1493,1494,1496,1499,1501,1504,1507,1510,1512,1514,1517],{"class":130,"line":603},[128,1495,236],{"class":134},[128,1497,1498],{"class":137}," num ",[128,1500,242],{"class":134},[128,1502,1503],{"class":134}," sizeof",[128,1505,1506],{"class":137},"(charArr) ",[128,1508,1509],{"class":134},"\u002F",[128,1511,1503],{"class":134},[128,1513,212],{"class":137},[128,1515,1516],{"class":134},"char",[128,1518,1519],{"class":137},");\n",[128,1521,1522,1525],{"class":130,"line":608},[128,1523,1524],{"class":144},"    mySort",[128,1526,1527],{"class":137},"(charArr, num);\n",[128,1529,1530,1533],{"class":130,"line":613},[128,1531,1532],{"class":144},"    printArray",[128,1534,1527],{"class":137},[128,1536,1537],{"class":130,"line":624},[128,1538,273],{"class":137},[128,1540,1541],{"class":130,"line":629},[128,1542,194],{"emptyLinePlaceholder":193},[128,1544,1545,1547,1549],{"class":130,"line":638},[128,1546,206],{"class":134},[128,1548,934],{"class":144},[128,1550,450],{"class":137},[128,1552,1553],{"class":130,"line":643},[128,1554,401],{"class":137},[128,1556,1557],{"class":130,"line":648},[128,1558,1559],{"class":199},"    \u002F\u002F测试int数组\n",[128,1561,1562,1564,1567,1569,1572,1575,1577,1580,1582,1585,1587,1590,1592,1595,1597,1600,1602,1605,1607,1610,1612,1615],{"class":130,"line":659},[128,1563,236],{"class":134},[128,1565,1566],{"class":137}," intArr[] ",[128,1568,242],{"class":134},[128,1570,1571],{"class":137}," { ",[128,1573,1574],{"class":468},"7",[128,1576,222],{"class":137},[128,1578,1579],{"class":468},"5",[128,1581,222],{"class":137},[128,1583,1584],{"class":468},"8",[128,1586,222],{"class":137},[128,1588,1589],{"class":468},"1",[128,1591,222],{"class":137},[128,1593,1594],{"class":468},"3",[128,1596,222],{"class":137},[128,1598,1599],{"class":468},"9",[128,1601,222],{"class":137},[128,1603,1604],{"class":468},"2",[128,1606,222],{"class":137},[128,1608,1609],{"class":468},"4",[128,1611,222],{"class":137},[128,1613,1614],{"class":468},"6",[128,1616,1617],{"class":137}," };\n",[128,1619,1621,1623,1625,1627,1629,1632,1634,1636,1638,1640],{"class":130,"line":1620},51,[128,1622,236],{"class":134},[128,1624,1498],{"class":137},[128,1626,242],{"class":134},[128,1628,1503],{"class":134},[128,1630,1631],{"class":137},"(intArr) ",[128,1633,1509],{"class":134},[128,1635,1503],{"class":134},[128,1637,212],{"class":137},[128,1639,546],{"class":134},[128,1641,1519],{"class":137},[128,1643,1645,1647],{"class":130,"line":1644},52,[128,1646,1524],{"class":144},[128,1648,1649],{"class":137},"(intArr, num);\n",[128,1651,1653,1655],{"class":130,"line":1652},53,[128,1654,1532],{"class":144},[128,1656,1649],{"class":137},[128,1658,1660],{"class":130,"line":1659},54,[128,1661,273],{"class":137},[128,1663,1665],{"class":130,"line":1664},55,[128,1666,194],{"emptyLinePlaceholder":193},[128,1668,1670,1672,1674],{"class":130,"line":1669},56,[128,1671,546],{"class":134},[128,1673,618],{"class":144},[128,1675,621],{"class":137},[128,1677,1679],{"class":130,"line":1678},57,[128,1680,194],{"emptyLinePlaceholder":193},[128,1682,1684,1686],{"class":130,"line":1683},58,[128,1685,632],{"class":144},[128,1687,635],{"class":137},[128,1689,1691,1693],{"class":130,"line":1690},59,[128,1692,994],{"class":144},[128,1694,635],{"class":137},[128,1696,1698],{"class":130,"line":1697},60,[128,1699,194],{"emptyLinePlaceholder":193},[128,1701,1703],{"class":130,"line":1702},61,[128,1704,194],{"emptyLinePlaceholder":193},[128,1706,1708,1710,1712],{"class":130,"line":1707},62,[128,1709,651],{"class":134},[128,1711,654],{"class":468},[128,1713,472],{"class":137},[128,1715,1717],{"class":130,"line":1716},63,[128,1718,273],{"class":137},[18,1720,1721],{},[22,1722,1723],{},"运行结果（类型大小或类型名可能随编译器和平台变化）：",[118,1725,1728],{"className":1726,"code":1727,"language":671,"meta":123},[669],"h g f e d c b a \\x00\n9 8 7 6 5 4 3 2 1\n",[125,1729,1727],{"__ignoreMap":123},[18,1731,1732],{},"Summary: Templates can improve code reusability and require proficiency to master.",[98,1734,1736],{"id":1735},"difference-between-regular-functions-and-function-templates","Difference Between Regular Functions and Function Templates",[18,1738,1739],{},"A regular function is defined for specific parameter types, requiring explicit type definitions during declaration. A function template, however, is a blueprint for generating functions, where parameter types are specified as placeholders—allowing the compiler to automatically deduce or instantiate the appropriate function version based on the actual arguments provided. While regular functions lead to potential code duplication when handling multiple data types, function templates eliminate redundancy by enabling a single definition to operate across various types. Templates are resolved at compile time, generating specialized code as needed, whereas regular functions are directly compiled and linked. Use templates when logic is consistent but data types may vary; opt for regular functions when operations are type-specific or require explicit control over implementation details.",[18,1741,1742],{},[22,1743,1744],{},"Difference Between Regular Functions and Function Templates:",[62,1746,1747,1750,1753],{},[65,1748,1749],{},"Automatic type conversion (implicit type conversion) can occur during ordinary function calls.",[65,1751,1752],{},"When invoking function templates, implicit type conversions do not occur if automatic type deduction is used.",[65,1754,1755],{},"If using the specified type, implicit type conversion can occur.",[18,1757,1758],{},[22,1759,183],{},[118,1761,1763],{"className":120,"code":1762,"language":122,"meta":123,"style":123},"\u002F\u002F普通函数\nint myAdd01(int a, int b)\n{\n    return a + b;\n}\n\n\u002F\u002F函数模板\ntemplate\u003Cclass T>\nT myAdd02(T a, T b)  \n{\n    return a + b;\n}\n\n\u002F\u002F使用函数模板时，如果用自动类型推导，不会发生自动类型转换,即隐式类型转换\nvoid test01()\n{\n    int a = 10;\n    int b = 20;\n    char c = 'c';\n    \n    cout \u003C\u003C myAdd01(a, c) \u003C\u003C endl; \u002F\u002F正确，将char类型的'c'隐式转换为int类型  'c' 对应 ASCII码 99\n\n    \u002F\u002FmyAdd02(a, c); \u002F\u002F 报错，使用自动类型推导时，不会发生隐式类型转换\n\n    myAdd02\u003Cint>(a, c); \u002F\u002F正确，如果用显示指定类型，可以发生隐式类型转换\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[125,1764,1765,1770,1791,1795,1805,1809,1813,1818,1830,1852,1856,1866,1870,1874,1879,1887,1891,1903,1915,1927,1931,1950,1954,1962,1966,1981,1985,1989,1997,2001,2007,2011,2015,2023],{"__ignoreMap":123},[128,1766,1767],{"class":130,"line":131},[128,1768,1769],{"class":199},"\u002F\u002F普通函数\n",[128,1771,1772,1774,1777,1779,1781,1783,1785,1787,1789],{"class":130,"line":151},[128,1773,546],{"class":134},[128,1775,1776],{"class":144}," myAdd01",[128,1778,212],{"class":137},[128,1780,546],{"class":134},[128,1782,219],{"class":218},[128,1784,222],{"class":137},[128,1786,546],{"class":134},[128,1788,227],{"class":218},[128,1790,395],{"class":137},[128,1792,1793],{"class":130,"line":203},[128,1794,401],{"class":137},[128,1796,1797,1799,1801,1803],{"class":130,"line":233},[128,1798,651],{"class":134},[128,1800,463],{"class":137},[128,1802,1266],{"class":134},[128,1804,256],{"class":137},[128,1806,1807],{"class":130,"line":248},[128,1808,273],{"class":137},[128,1810,1811],{"class":130,"line":259},[128,1812,194],{"emptyLinePlaceholder":193},[128,1814,1815],{"class":130,"line":270},[128,1816,1817],{"class":199},"\u002F\u002F函数模板\n",[128,1819,1820,1822,1824,1826,1828],{"class":130,"line":276},[128,1821,5],{"class":134},[128,1823,138],{"class":137},[128,1825,726],{"class":134},[128,1827,145],{"class":144},[128,1829,148],{"class":137},[128,1831,1832,1834,1837,1839,1841,1843,1845,1847,1849],{"class":130,"line":281},[128,1833,379],{"class":144},[128,1835,1836],{"class":144}," myAdd02",[128,1838,212],{"class":137},[128,1840,379],{"class":144},[128,1842,219],{"class":218},[128,1844,222],{"class":137},[128,1846,379],{"class":144},[128,1848,227],{"class":218},[128,1850,1851],{"class":137},")  \n",[128,1853,1854],{"class":130,"line":287},[128,1855,401],{"class":137},[128,1857,1858,1860,1862,1864],{"class":130,"line":310},[128,1859,651],{"class":134},[128,1861,463],{"class":137},[128,1863,1266],{"class":134},[128,1865,256],{"class":137},[128,1867,1868],{"class":130,"line":322},[128,1869,273],{"class":137},[128,1871,1872],{"class":130,"line":331},[128,1873,194],{"emptyLinePlaceholder":193},[128,1875,1876],{"class":130,"line":340},[128,1877,1878],{"class":199},"\u002F\u002F使用函数模板时，如果用自动类型推导，不会发生自动类型转换,即隐式类型转换\n",[128,1880,1881,1883,1885],{"class":130,"line":345},[128,1882,206],{"class":134},[128,1884,447],{"class":144},[128,1886,450],{"class":137},[128,1888,1889],{"class":130,"line":350},[128,1890,401],{"class":137},[128,1892,1893,1895,1897,1899,1901],{"class":130,"line":356},[128,1894,236],{"class":134},[128,1896,463],{"class":137},[128,1898,242],{"class":134},[128,1900,469],{"class":468},[128,1902,472],{"class":137},[128,1904,1905,1907,1909,1911,1913],{"class":130,"line":369},[128,1906,236],{"class":134},[128,1908,480],{"class":137},[128,1910,242],{"class":134},[128,1912,485],{"class":468},[128,1914,472],{"class":137},[128,1916,1917,1919,1921,1923,1925],{"class":130,"line":398},[128,1918,836],{"class":134},[128,1920,839],{"class":137},[128,1922,242],{"class":134},[128,1924,844],{"class":566},[128,1926,472],{"class":137},[128,1928,1929],{"class":130,"line":404},[128,1930,493],{"class":137},[128,1932,1933,1935,1937,1939,1942,1944,1947],{"class":130,"line":414},[128,1934,560],{"class":137},[128,1936,563],{"class":134},[128,1938,1776],{"class":144},[128,1940,1941],{"class":137},"(a, c) ",[128,1943,563],{"class":134},[128,1945,1946],{"class":137}," endl;",[128,1948,1949],{"class":199}," \u002F\u002F正确，将char类型的'c'隐式转换为int类型  'c' 对应 ASCII码 99\n",[128,1951,1952],{"class":130,"line":423},[128,1953,194],{"emptyLinePlaceholder":193},[128,1955,1956,1959],{"class":130,"line":432},[128,1957,1958],{"class":199},"    \u002F\u002FmyAdd02(a, c);",[128,1960,1961],{"class":199}," \u002F\u002F 报错，使用自动类型推导时，不会发生隐式类型转换\n",[128,1963,1964],{"class":130,"line":437},[128,1965,194],{"emptyLinePlaceholder":193},[128,1967,1968,1971,1973,1975,1978],{"class":130,"line":442},[128,1969,1970],{"class":144},"    myAdd02",[128,1972,138],{"class":137},[128,1974,546],{"class":134},[128,1976,1977],{"class":137},">(a, c);",[128,1979,1980],{"class":199}," \u002F\u002F正确，如果用显示指定类型，可以发生隐式类型转换\n",[128,1982,1983],{"class":130,"line":453},[128,1984,273],{"class":137},[128,1986,1987],{"class":130,"line":458},[128,1988,194],{"emptyLinePlaceholder":193},[128,1990,1991,1993,1995],{"class":130,"line":475},[128,1992,546],{"class":134},[128,1994,618],{"class":144},[128,1996,621],{"class":137},[128,1998,1999],{"class":130,"line":490},[128,2000,194],{"emptyLinePlaceholder":193},[128,2002,2003,2005],{"class":130,"line":496},[128,2004,632],{"class":144},[128,2006,635],{"class":137},[128,2008,2009],{"class":130,"line":502},[128,2010,194],{"emptyLinePlaceholder":193},[128,2012,2013],{"class":130,"line":507},[128,2014,194],{"emptyLinePlaceholder":193},[128,2016,2017,2019,2021],{"class":130,"line":513},[128,2018,651],{"class":134},[128,2020,654],{"class":468},[128,2022,472],{"class":137},[128,2024,2025],{"class":130,"line":519},[128,2026,273],{"class":137},[18,2028,2029],{},[22,2030,159],{},[118,2032,2035],{"className":2033,"code":2034,"language":671,"meta":123},[669],"109\n",[125,2036,2034],{"__ignoreMap":123},[18,2038,2039],{},"Summary: It is recommended to explicitly specify types when calling a function template, as this allows you to determine the generic type T yourself.",[98,2041,2043],{"id":2042},"calling-rules-for-regular-functions-vs-function-templates","Calling Rules for Regular Functions vs. Function Templates",[18,2045,2046],{},"The call rules are as follows:",[2048,2049,2050,2053,2056,2059],"ol",{},[65,2051,2052],{},"If both a function template and a regular function can be implemented, the regular function is called with priority.",[65,2054,2055],{},"You can enforce a function template invocation using an empty template parameter list.",[65,2057,2058],{},"Function templates can also be overloaded.",[65,2060,2061],{},"If a function template can produce a better match, it is preferred over a non-template function.",[18,2063,2064],{},[22,2065,183],{},[118,2067,2069],{"className":120,"code":2068,"language":122,"meta":123,"style":123},"\u002F\u002F普通函数与函数模板调用规则\nvoid myPrint(int a, int b)\n{\n    cout \u003C\u003C \"调用的普通函数\" \u003C\u003C endl;\n}\n\ntemplate\u003Ctypename T>\nvoid myPrint(T a, T b) \n{ \n    cout \u003C\u003C \"调用的模板\" \u003C\u003C endl;\n}\n\ntemplate\u003Ctypename T>\nvoid myPrint(T a, T b, T c) \n{ \n    cout \u003C\u003C \"调用重载的模板\" \u003C\u003C endl; \n}\n\nvoid test01()\n{\n    \u002F\u002F1、如果函数模板和普通函数都可以实现，优先调用普通函数\n    \u002F\u002F 注意 如果告诉编译器  普通函数是有的，但只是声明没有实现，或者不在当前文件内实现，就会报错找不到\n    int a = 10;\n    int b = 20;\n    myPrint(a, b); \u002F\u002F调用普通函数\n\n    \u002F\u002F2、可以通过空模板参数列表来强制调用函数模板\n    myPrint\u003C>(a, b); \u002F\u002F调用函数模板\n\n    \u002F\u002F3、函数模板也可以发生重载\n    int c = 30;\n    myPrint(a, b, c); \u002F\u002F调用重载的函数模板\n\n    \u002F\u002F4、 如果函数模板可以产生更好的匹配,优先调用函数模板\n    char c1 = 'a';\n    char c2 = 'b';\n    myPrint(c1, c2); \u002F\u002F调用函数模板\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[125,2070,2071,2076,2097,2101,2114,2118,2122,2134,2155,2160,2173,2177,2181,2193,2220,2224,2238,2242,2246,2254,2258,2263,2268,2280,2292,2302,2306,2311,2321,2325,2330,2343,2353,2357,2362,2376,2390,2399,2403,2407,2415,2419,2425,2429,2433,2441],{"__ignoreMap":123},[128,2072,2073],{"class":130,"line":131},[128,2074,2075],{"class":199},"\u002F\u002F普通函数与函数模板调用规则\n",[128,2077,2078,2080,2083,2085,2087,2089,2091,2093,2095],{"class":130,"line":151},[128,2079,206],{"class":134},[128,2081,2082],{"class":144}," myPrint",[128,2084,212],{"class":137},[128,2086,546],{"class":134},[128,2088,219],{"class":218},[128,2090,222],{"class":137},[128,2092,546],{"class":134},[128,2094,227],{"class":218},[128,2096,395],{"class":137},[128,2098,2099],{"class":130,"line":203},[128,2100,401],{"class":137},[128,2102,2103,2105,2107,2110,2112],{"class":130,"line":233},[128,2104,560],{"class":137},[128,2106,563],{"class":134},[128,2108,2109],{"class":566}," \"调用的普通函数\"",[128,2111,570],{"class":134},[128,2113,577],{"class":137},[128,2115,2116],{"class":130,"line":248},[128,2117,273],{"class":137},[128,2119,2120],{"class":130,"line":259},[128,2121,194],{"emptyLinePlaceholder":193},[128,2123,2124,2126,2128,2130,2132],{"class":130,"line":270},[128,2125,5],{"class":134},[128,2127,138],{"class":137},[128,2129,141],{"class":134},[128,2131,145],{"class":144},[128,2133,148],{"class":137},[128,2135,2136,2138,2140,2142,2144,2146,2148,2150,2152],{"class":130,"line":276},[128,2137,206],{"class":134},[128,2139,2082],{"class":144},[128,2141,212],{"class":137},[128,2143,379],{"class":144},[128,2145,219],{"class":218},[128,2147,222],{"class":137},[128,2149,379],{"class":144},[128,2151,227],{"class":218},[128,2153,2154],{"class":137},") \n",[128,2156,2157],{"class":130,"line":281},[128,2158,2159],{"class":137},"{ \n",[128,2161,2162,2164,2166,2169,2171],{"class":130,"line":287},[128,2163,560],{"class":137},[128,2165,563],{"class":134},[128,2167,2168],{"class":566}," \"调用的模板\"",[128,2170,570],{"class":134},[128,2172,577],{"class":137},[128,2174,2175],{"class":130,"line":310},[128,2176,273],{"class":137},[128,2178,2179],{"class":130,"line":322},[128,2180,194],{"emptyLinePlaceholder":193},[128,2182,2183,2185,2187,2189,2191],{"class":130,"line":331},[128,2184,5],{"class":134},[128,2186,138],{"class":137},[128,2188,141],{"class":134},[128,2190,145],{"class":144},[128,2192,148],{"class":137},[128,2194,2195,2197,2199,2201,2203,2205,2207,2209,2211,2213,2215,2218],{"class":130,"line":340},[128,2196,206],{"class":134},[128,2198,2082],{"class":144},[128,2200,212],{"class":137},[128,2202,379],{"class":144},[128,2204,219],{"class":218},[128,2206,222],{"class":137},[128,2208,379],{"class":144},[128,2210,227],{"class":218},[128,2212,222],{"class":137},[128,2214,379],{"class":144},[128,2216,2217],{"class":218}," c",[128,2219,2154],{"class":137},[128,2221,2222],{"class":130,"line":345},[128,2223,2159],{"class":137},[128,2225,2226,2228,2230,2233,2235],{"class":130,"line":350},[128,2227,560],{"class":137},[128,2229,563],{"class":134},[128,2231,2232],{"class":566}," \"调用重载的模板\"",[128,2234,570],{"class":134},[128,2236,2237],{"class":137}," endl; \n",[128,2239,2240],{"class":130,"line":356},[128,2241,273],{"class":137},[128,2243,2244],{"class":130,"line":369},[128,2245,194],{"emptyLinePlaceholder":193},[128,2247,2248,2250,2252],{"class":130,"line":398},[128,2249,206],{"class":134},[128,2251,447],{"class":144},[128,2253,450],{"class":137},[128,2255,2256],{"class":130,"line":404},[128,2257,401],{"class":137},[128,2259,2260],{"class":130,"line":414},[128,2261,2262],{"class":199},"    \u002F\u002F1、如果函数模板和普通函数都可以实现，优先调用普通函数\n",[128,2264,2265],{"class":130,"line":423},[128,2266,2267],{"class":199},"    \u002F\u002F 注意 如果告诉编译器  普通函数是有的，但只是声明没有实现，或者不在当前文件内实现，就会报错找不到\n",[128,2269,2270,2272,2274,2276,2278],{"class":130,"line":432},[128,2271,236],{"class":134},[128,2273,463],{"class":137},[128,2275,242],{"class":134},[128,2277,469],{"class":468},[128,2279,472],{"class":137},[128,2281,2282,2284,2286,2288,2290],{"class":130,"line":437},[128,2283,236],{"class":134},[128,2285,480],{"class":137},[128,2287,242],{"class":134},[128,2289,485],{"class":468},[128,2291,472],{"class":137},[128,2293,2294,2297,2299],{"class":130,"line":442},[128,2295,2296],{"class":144},"    myPrint",[128,2298,857],{"class":137},[128,2300,2301],{"class":199}," \u002F\u002F调用普通函数\n",[128,2303,2304],{"class":130,"line":453},[128,2305,194],{"emptyLinePlaceholder":193},[128,2307,2308],{"class":130,"line":458},[128,2309,2310],{"class":199},"    \u002F\u002F2、可以通过空模板参数列表来强制调用函数模板\n",[128,2312,2313,2315,2318],{"class":130,"line":475},[128,2314,2296],{"class":144},[128,2316,2317],{"class":137},"\u003C>(a, b);",[128,2319,2320],{"class":199}," \u002F\u002F调用函数模板\n",[128,2322,2323],{"class":130,"line":490},[128,2324,194],{"emptyLinePlaceholder":193},[128,2326,2327],{"class":130,"line":496},[128,2328,2329],{"class":199},"    \u002F\u002F3、函数模板也可以发生重载\n",[128,2331,2332,2334,2336,2338,2341],{"class":130,"line":502},[128,2333,236],{"class":134},[128,2335,839],{"class":137},[128,2337,242],{"class":134},[128,2339,2340],{"class":468}," 30",[128,2342,472],{"class":137},[128,2344,2345,2347,2350],{"class":130,"line":507},[128,2346,2296],{"class":144},[128,2348,2349],{"class":137},"(a, b, c);",[128,2351,2352],{"class":199}," \u002F\u002F调用重载的函数模板\n",[128,2354,2355],{"class":130,"line":513},[128,2356,194],{"emptyLinePlaceholder":193},[128,2358,2359],{"class":130,"line":519},[128,2360,2361],{"class":199},"    \u002F\u002F4、 如果函数模板可以产生更好的匹配,优先调用函数模板\n",[128,2363,2364,2366,2369,2371,2374],{"class":130,"line":528},[128,2365,836],{"class":134},[128,2367,2368],{"class":137}," c1 ",[128,2370,242],{"class":134},[128,2372,2373],{"class":566}," 'a'",[128,2375,472],{"class":137},[128,2377,2378,2380,2383,2385,2388],{"class":130,"line":533},[128,2379,836],{"class":134},[128,2381,2382],{"class":137}," c2 ",[128,2384,242],{"class":134},[128,2386,2387],{"class":566}," 'b'",[128,2389,472],{"class":137},[128,2391,2392,2394,2397],{"class":130,"line":539},[128,2393,2296],{"class":144},[128,2395,2396],{"class":137},"(c1, c2);",[128,2398,2320],{"class":199},[128,2400,2401],{"class":130,"line":552},[128,2402,273],{"class":137},[128,2404,2405],{"class":130,"line":557},[128,2406,194],{"emptyLinePlaceholder":193},[128,2408,2409,2411,2413],{"class":130,"line":580},[128,2410,546],{"class":134},[128,2412,618],{"class":144},[128,2414,621],{"class":137},[128,2416,2417],{"class":130,"line":598},[128,2418,194],{"emptyLinePlaceholder":193},[128,2420,2421,2423],{"class":130,"line":603},[128,2422,632],{"class":144},[128,2424,635],{"class":137},[128,2426,2427],{"class":130,"line":608},[128,2428,194],{"emptyLinePlaceholder":193},[128,2430,2431],{"class":130,"line":613},[128,2432,194],{"emptyLinePlaceholder":193},[128,2434,2435,2437,2439],{"class":130,"line":624},[128,2436,651],{"class":134},[128,2438,654],{"class":468},[128,2440,472],{"class":137},[128,2442,2443],{"class":130,"line":629},[128,2444,273],{"class":137},[18,2446,2447],{},[22,2448,159],{},[118,2450,2453],{"className":2451,"code":2452,"language":671,"meta":123},[669],"调用的普通函数\n调用的模板\n调用重载的模板\n调用的模板\n",[125,2454,2452],{"__ignoreMap":123},[18,2456,2457],{},"In summary: Since function templates are provided, it's best not to provide regular functions to avoid potential ambiguity.",[98,2459,2461],{"id":2460},"limitations-of-templates","Limitations of templates",[18,2463,2464],{},[22,2465,2466],{},"Limitations:",[62,2468,2469],{},[65,2470,2471],{},"The general applicability of the template isn't omnipotent.",[18,2473,2474],{},[22,2475,2476],{},"For example:",[118,2478,2480],{"className":120,"code":2479,"language":122,"meta":123,"style":123},"    template\u003Cclass T>\n    void f(T a, T b)\n    { \n        a = b;\n    }\n",[125,2481,2482,2495,2517,2522,2531],{"__ignoreMap":123},[128,2483,2484,2487,2489,2491,2493],{"class":130,"line":131},[128,2485,2486],{"class":134},"    template",[128,2488,138],{"class":137},[128,2490,726],{"class":134},[128,2492,145],{"class":144},[128,2494,148],{"class":137},[128,2496,2497,2500,2503,2505,2507,2509,2511,2513,2515],{"class":130,"line":151},[128,2498,2499],{"class":134},"    void",[128,2501,2502],{"class":144}," f",[128,2504,212],{"class":137},[128,2506,379],{"class":144},[128,2508,219],{"class":218},[128,2510,222],{"class":137},[128,2512,379],{"class":144},[128,2514,227],{"class":218},[128,2516,395],{"class":137},[128,2518,2519],{"class":130,"line":203},[128,2520,2521],{"class":137},"    { \n",[128,2523,2524,2527,2529],{"class":130,"line":233},[128,2525,2526],{"class":137},"        a ",[128,2528,242],{"class":134},[128,2530,256],{"class":137},[128,2532,2533],{"class":130,"line":248},[128,2534,1362],{"class":137},[18,2536,2537,160,2539,164],{},[22,2538,159],{},[125,2540,163],{},[18,2542,2543],{},"In the code provided above, the assignment operation as implemented cannot handle cases where the input parameters a and b are arrays.",[18,2545,2546],{},"Another example:",[118,2548,2550],{"className":120,"code":2549,"language":122,"meta":123,"style":123},"    template\u003Cclass T>\n    void f(T a, T b)\n    { \n        if(a > b) { ... }\n    }\n",[125,2551,2552,2564,2584,2588,2600],{"__ignoreMap":123},[128,2553,2554,2556,2558,2560,2562],{"class":130,"line":131},[128,2555,2486],{"class":134},[128,2557,138],{"class":137},[128,2559,726],{"class":134},[128,2561,145],{"class":144},[128,2563,148],{"class":137},[128,2565,2566,2568,2570,2572,2574,2576,2578,2580,2582],{"class":130,"line":151},[128,2567,2499],{"class":134},[128,2569,2502],{"class":144},[128,2571,212],{"class":137},[128,2573,379],{"class":144},[128,2575,219],{"class":218},[128,2577,222],{"class":137},[128,2579,379],{"class":144},[128,2581,227],{"class":218},[128,2583,395],{"class":137},[128,2585,2586],{"class":130,"line":203},[128,2587,2521],{"class":137},[128,2589,2590,2592,2595,2597],{"class":130,"line":233},[128,2591,1329],{"class":134},[128,2593,2594],{"class":137},"(a ",[128,2596,1160],{"class":134},[128,2598,2599],{"class":137}," b) { ... }\n",[128,2601,2602],{"class":130,"line":248},[128,2603,1362],{"class":137},[18,2605,2606,160,2608,164],{},[22,2607,159],{},[125,2609,163],{},[18,2611,2612],{},"In the provided code, if T is a custom data type like Person, it still will not run properly.",[18,2614,2615],{},"Therefore, in order to address such issues, C++ provides template overloading, which allows for concrete templates to be defined for these specific types.",[18,2617,2618],{},[22,2619,183],{},[118,2621,2623],{"className":120,"code":2622,"language":122,"meta":123,"style":123},"#include\u003Ciostream>\nusing namespace std;\n\n#include \u003Cstring>\n\nclass Person\n{\npublic:\n    Person(string name, int age)\n    {\n        this->m_Name = name;\n        this->m_Age = age;\n    }\n    string m_Name;\n    int m_Age;\n};\n\n\u002F\u002F普通函数模板\ntemplate\u003Cclass T>\nbool myCompare(T& a, T& b)\n{\n    if (a == b)\n    {\n        return true;\n    }\n    else\n    {\n        return false;\n    }\n}\n\n\u002F\u002F具体化，显示具体化的原型和定意思以template\u003C>开头，并通过名称来指出类型\n\u002F\u002F具体化优先于常规模板\ntemplate\u003C> bool myCompare(Person &p1, Person &p2)\n{\n    if ( p1.m_Name  == p2.m_Name && p1.m_Age == p2.m_Age)\n    {\n        return true;\n    }\n    else\n    {\n        return false;\n    }\n}\n\nvoid test01()\n{\n    int a = 10;\n    int b = 20;\n    \u002F\u002F内置数据类型可以直接使用通用的函数模板\n    bool ret = myCompare(a, b);\n    if (ret)\n    {\n        cout \u003C\u003C \"a == b \" \u003C\u003C endl;\n    }\n    else\n    {\n        cout \u003C\u003C \"a != b \" \u003C\u003C endl;\n    }\n}\n\nvoid test02()\n{\n    Person p1(\"Tom\", 10);\n    Person p2(\"Tom\", 10);\n    \u002F\u002F自定义数据类型，不会调用普通的函数模板\n    \u002F\u002F可以创建具体化的Person数据类型的模板，用于特殊处理这个类型\n    bool ret = myCompare(p1, p2);\n    if (ret)\n    {\n        cout \u003C\u003C \"p1 == p2 \" \u003C\u003C endl;\n    }\n    else\n    {\n        cout \u003C\u003C \"p1 != p2 \" \u003C\u003C endl;\n    }\n}\n\nint main() {\n\n    test01();\n\n    test02();\n\n\n    return 0;\n}\n",[125,2624,2625,2633,2646,2650,2657,2661,2668,2672,2677,2699,2703,2716,2728,2732,2737,2744,2749,2753,2758,2770,2796,2800,2814,2818,2828,2832,2837,2841,2850,2854,2858,2862,2867,2872,2904,2908,2931,2935,2943,2947,2951,2955,2963,2967,2971,2975,2983,2987,2999,3011,3016,3030,3037,3041,3054,3058,3062,3066,3079,3083,3087,3091,3099,3103,3123,3140,3146,3152,3166,3173,3178,3192,3197,3202,3207,3221,3226,3231,3236,3245,3250,3257,3262,3269,3274,3279,3288],{"__ignoreMap":123},[128,2626,2627,2630],{"class":130,"line":131},[128,2628,2629],{"class":134},"#include",[128,2631,2632],{"class":566},"\u003Ciostream>\n",[128,2634,2635,2638,2641,2644],{"class":130,"line":151},[128,2636,2637],{"class":134},"using",[128,2639,2640],{"class":134}," namespace",[128,2642,2643],{"class":144}," std",[128,2645,472],{"class":137},[128,2647,2648],{"class":130,"line":203},[128,2649,194],{"emptyLinePlaceholder":193},[128,2651,2652,2654],{"class":130,"line":233},[128,2653,2629],{"class":134},[128,2655,2656],{"class":566}," \u003Cstring>\n",[128,2658,2659],{"class":130,"line":248},[128,2660,194],{"emptyLinePlaceholder":193},[128,2662,2663,2665],{"class":130,"line":259},[128,2664,726],{"class":134},[128,2666,2667],{"class":144}," Person\n",[128,2669,2670],{"class":130,"line":270},[128,2671,401],{"class":137},[128,2673,2674],{"class":130,"line":276},[128,2675,2676],{"class":134},"public:\n",[128,2678,2679,2682,2684,2687,2690,2692,2694,2697],{"class":130,"line":281},[128,2680,2681],{"class":144},"    Person",[128,2683,212],{"class":137},[128,2685,2686],{"class":144},"string",[128,2688,2689],{"class":218}," name",[128,2691,222],{"class":137},[128,2693,546],{"class":134},[128,2695,2696],{"class":218}," age",[128,2698,395],{"class":137},[128,2700,2701],{"class":130,"line":287},[128,2702,1231],{"class":137},[128,2704,2705,2708,2711,2713],{"class":130,"line":310},[128,2706,2707],{"class":468},"        this",[128,2709,2710],{"class":137},"->m_Name ",[128,2712,242],{"class":134},[128,2714,2715],{"class":137}," name;\n",[128,2717,2718,2720,2723,2725],{"class":130,"line":322},[128,2719,2707],{"class":468},[128,2721,2722],{"class":137},"->m_Age ",[128,2724,242],{"class":134},[128,2726,2727],{"class":137}," age;\n",[128,2729,2730],{"class":130,"line":331},[128,2731,1362],{"class":137},[128,2733,2734],{"class":130,"line":340},[128,2735,2736],{"class":137},"    string m_Name;\n",[128,2738,2739,2741],{"class":130,"line":345},[128,2740,236],{"class":134},[128,2742,2743],{"class":137}," m_Age;\n",[128,2745,2746],{"class":130,"line":350},[128,2747,2748],{"class":137},"};\n",[128,2750,2751],{"class":130,"line":356},[128,2752,194],{"emptyLinePlaceholder":193},[128,2754,2755],{"class":130,"line":369},[128,2756,2757],{"class":199},"\u002F\u002F普通函数模板\n",[128,2759,2760,2762,2764,2766,2768],{"class":130,"line":398},[128,2761,5],{"class":134},[128,2763,138],{"class":137},[128,2765,726],{"class":134},[128,2767,145],{"class":144},[128,2769,148],{"class":137},[128,2771,2772,2775,2778,2780,2782,2784,2786,2788,2790,2792,2794],{"class":130,"line":404},[128,2773,2774],{"class":134},"bool",[128,2776,2777],{"class":144}," myCompare",[128,2779,212],{"class":137},[128,2781,379],{"class":144},[128,2783,382],{"class":134},[128,2785,219],{"class":218},[128,2787,222],{"class":137},[128,2789,379],{"class":144},[128,2791,382],{"class":134},[128,2793,227],{"class":218},[128,2795,395],{"class":137},[128,2797,2798],{"class":130,"line":414},[128,2799,401],{"class":137},[128,2801,2802,2805,2808,2811],{"class":130,"line":423},[128,2803,2804],{"class":134},"    if",[128,2806,2807],{"class":137}," (a ",[128,2809,2810],{"class":134},"==",[128,2812,2813],{"class":137}," b)\n",[128,2815,2816],{"class":130,"line":432},[128,2817,1231],{"class":137},[128,2819,2820,2823,2826],{"class":130,"line":437},[128,2821,2822],{"class":134},"        return",[128,2824,2825],{"class":468}," true",[128,2827,472],{"class":137},[128,2829,2830],{"class":130,"line":442},[128,2831,1362],{"class":137},[128,2833,2834],{"class":130,"line":453},[128,2835,2836],{"class":134},"    else\n",[128,2838,2839],{"class":130,"line":458},[128,2840,1231],{"class":137},[128,2842,2843,2845,2848],{"class":130,"line":475},[128,2844,2822],{"class":134},[128,2846,2847],{"class":468}," false",[128,2849,472],{"class":137},[128,2851,2852],{"class":130,"line":490},[128,2853,1362],{"class":137},[128,2855,2856],{"class":130,"line":496},[128,2857,273],{"class":137},[128,2859,2860],{"class":130,"line":502},[128,2861,194],{"emptyLinePlaceholder":193},[128,2863,2864],{"class":130,"line":507},[128,2865,2866],{"class":199},"\u002F\u002F具体化，显示具体化的原型和定意思以template\u003C>开头，并通过名称来指出类型\n",[128,2868,2869],{"class":130,"line":513},[128,2870,2871],{"class":199},"\u002F\u002F具体化优先于常规模板\n",[128,2873,2874,2876,2879,2881,2883,2885,2888,2890,2893,2895,2897,2899,2902],{"class":130,"line":519},[128,2875,5],{"class":134},[128,2877,2878],{"class":137},"\u003C> ",[128,2880,2774],{"class":134},[128,2882,2777],{"class":144},[128,2884,212],{"class":137},[128,2886,2887],{"class":144},"Person",[128,2889,1097],{"class":134},[128,2891,2892],{"class":218},"p1",[128,2894,222],{"class":137},[128,2896,2887],{"class":144},[128,2898,1097],{"class":134},[128,2900,2901],{"class":218},"p2",[128,2903,395],{"class":137},[128,2905,2906],{"class":130,"line":528},[128,2907,401],{"class":137},[128,2909,2910,2912,2915,2917,2920,2923,2926,2928],{"class":130,"line":533},[128,2911,2804],{"class":134},[128,2913,2914],{"class":137}," ( p1.m_Name  ",[128,2916,2810],{"class":134},[128,2918,2919],{"class":137}," p2.m_Name ",[128,2921,2922],{"class":134},"&&",[128,2924,2925],{"class":137}," p1.m_Age ",[128,2927,2810],{"class":134},[128,2929,2930],{"class":137}," p2.m_Age)\n",[128,2932,2933],{"class":130,"line":539},[128,2934,1231],{"class":137},[128,2936,2937,2939,2941],{"class":130,"line":552},[128,2938,2822],{"class":134},[128,2940,2825],{"class":468},[128,2942,472],{"class":137},[128,2944,2945],{"class":130,"line":557},[128,2946,1362],{"class":137},[128,2948,2949],{"class":130,"line":580},[128,2950,2836],{"class":134},[128,2952,2953],{"class":130,"line":598},[128,2954,1231],{"class":137},[128,2956,2957,2959,2961],{"class":130,"line":603},[128,2958,2822],{"class":134},[128,2960,2847],{"class":468},[128,2962,472],{"class":137},[128,2964,2965],{"class":130,"line":608},[128,2966,1362],{"class":137},[128,2968,2969],{"class":130,"line":613},[128,2970,273],{"class":137},[128,2972,2973],{"class":130,"line":624},[128,2974,194],{"emptyLinePlaceholder":193},[128,2976,2977,2979,2981],{"class":130,"line":629},[128,2978,206],{"class":134},[128,2980,447],{"class":144},[128,2982,450],{"class":137},[128,2984,2985],{"class":130,"line":638},[128,2986,401],{"class":137},[128,2988,2989,2991,2993,2995,2997],{"class":130,"line":643},[128,2990,236],{"class":134},[128,2992,463],{"class":137},[128,2994,242],{"class":134},[128,2996,469],{"class":468},[128,2998,472],{"class":137},[128,3000,3001,3003,3005,3007,3009],{"class":130,"line":648},[128,3002,236],{"class":134},[128,3004,480],{"class":137},[128,3006,242],{"class":134},[128,3008,485],{"class":468},[128,3010,472],{"class":137},[128,3012,3013],{"class":130,"line":659},[128,3014,3015],{"class":199},"    \u002F\u002F内置数据类型可以直接使用通用的函数模板\n",[128,3017,3018,3021,3024,3026,3028],{"class":130,"line":1620},[128,3019,3020],{"class":134},"    bool",[128,3022,3023],{"class":137}," ret ",[128,3025,242],{"class":134},[128,3027,2777],{"class":144},[128,3029,525],{"class":137},[128,3031,3032,3034],{"class":130,"line":1644},[128,3033,2804],{"class":134},[128,3035,3036],{"class":137}," (ret)\n",[128,3038,3039],{"class":130,"line":1652},[128,3040,1231],{"class":137},[128,3042,3043,3045,3047,3050,3052],{"class":130,"line":1659},[128,3044,1432],{"class":137},[128,3046,563],{"class":134},[128,3048,3049],{"class":566}," \"a == b \"",[128,3051,570],{"class":134},[128,3053,577],{"class":137},[128,3055,3056],{"class":130,"line":1664},[128,3057,1362],{"class":137},[128,3059,3060],{"class":130,"line":1669},[128,3061,2836],{"class":134},[128,3063,3064],{"class":130,"line":1678},[128,3065,1231],{"class":137},[128,3067,3068,3070,3072,3075,3077],{"class":130,"line":1683},[128,3069,1432],{"class":137},[128,3071,563],{"class":134},[128,3073,3074],{"class":566}," \"a != b \"",[128,3076,570],{"class":134},[128,3078,577],{"class":137},[128,3080,3081],{"class":130,"line":1690},[128,3082,1362],{"class":137},[128,3084,3085],{"class":130,"line":1697},[128,3086,273],{"class":137},[128,3088,3089],{"class":130,"line":1702},[128,3090,194],{"emptyLinePlaceholder":193},[128,3092,3093,3095,3097],{"class":130,"line":1707},[128,3094,206],{"class":134},[128,3096,934],{"class":144},[128,3098,450],{"class":137},[128,3100,3101],{"class":130,"line":1716},[128,3102,401],{"class":137},[128,3104,3106,3109,3111,3113,3116,3118,3121],{"class":130,"line":3105},64,[128,3107,3108],{"class":137},"    Person ",[128,3110,2892],{"class":144},[128,3112,212],{"class":137},[128,3114,3115],{"class":566},"\"Tom\"",[128,3117,222],{"class":137},[128,3119,3120],{"class":468},"10",[128,3122,1519],{"class":137},[128,3124,3126,3128,3130,3132,3134,3136,3138],{"class":130,"line":3125},65,[128,3127,3108],{"class":137},[128,3129,2901],{"class":144},[128,3131,212],{"class":137},[128,3133,3115],{"class":566},[128,3135,222],{"class":137},[128,3137,3120],{"class":468},[128,3139,1519],{"class":137},[128,3141,3143],{"class":130,"line":3142},66,[128,3144,3145],{"class":199},"    \u002F\u002F自定义数据类型，不会调用普通的函数模板\n",[128,3147,3149],{"class":130,"line":3148},67,[128,3150,3151],{"class":199},"    \u002F\u002F可以创建具体化的Person数据类型的模板，用于特殊处理这个类型\n",[128,3153,3155,3157,3159,3161,3163],{"class":130,"line":3154},68,[128,3156,3020],{"class":134},[128,3158,3023],{"class":137},[128,3160,242],{"class":134},[128,3162,2777],{"class":144},[128,3164,3165],{"class":137},"(p1, p2);\n",[128,3167,3169,3171],{"class":130,"line":3168},69,[128,3170,2804],{"class":134},[128,3172,3036],{"class":137},[128,3174,3176],{"class":130,"line":3175},70,[128,3177,1231],{"class":137},[128,3179,3181,3183,3185,3188,3190],{"class":130,"line":3180},71,[128,3182,1432],{"class":137},[128,3184,563],{"class":134},[128,3186,3187],{"class":566}," \"p1 == p2 \"",[128,3189,570],{"class":134},[128,3191,577],{"class":137},[128,3193,3195],{"class":130,"line":3194},72,[128,3196,1362],{"class":137},[128,3198,3200],{"class":130,"line":3199},73,[128,3201,2836],{"class":134},[128,3203,3205],{"class":130,"line":3204},74,[128,3206,1231],{"class":137},[128,3208,3210,3212,3214,3217,3219],{"class":130,"line":3209},75,[128,3211,1432],{"class":137},[128,3213,563],{"class":134},[128,3215,3216],{"class":566}," \"p1 != p2 \"",[128,3218,570],{"class":134},[128,3220,577],{"class":137},[128,3222,3224],{"class":130,"line":3223},76,[128,3225,1362],{"class":137},[128,3227,3229],{"class":130,"line":3228},77,[128,3230,273],{"class":137},[128,3232,3234],{"class":130,"line":3233},78,[128,3235,194],{"emptyLinePlaceholder":193},[128,3237,3239,3241,3243],{"class":130,"line":3238},79,[128,3240,546],{"class":134},[128,3242,618],{"class":144},[128,3244,621],{"class":137},[128,3246,3248],{"class":130,"line":3247},80,[128,3249,194],{"emptyLinePlaceholder":193},[128,3251,3253,3255],{"class":130,"line":3252},81,[128,3254,632],{"class":144},[128,3256,635],{"class":137},[128,3258,3260],{"class":130,"line":3259},82,[128,3261,194],{"emptyLinePlaceholder":193},[128,3263,3265,3267],{"class":130,"line":3264},83,[128,3266,994],{"class":144},[128,3268,635],{"class":137},[128,3270,3272],{"class":130,"line":3271},84,[128,3273,194],{"emptyLinePlaceholder":193},[128,3275,3277],{"class":130,"line":3276},85,[128,3278,194],{"emptyLinePlaceholder":193},[128,3280,3282,3284,3286],{"class":130,"line":3281},86,[128,3283,651],{"class":134},[128,3285,654],{"class":468},[128,3287,472],{"class":137},[128,3289,3291],{"class":130,"line":3290},87,[128,3292,273],{"class":137},[18,3294,3295],{},[22,3296,159],{},[118,3298,3301],{"className":3299,"code":3300,"language":671,"meta":123},[669],"a != b\np1 == p2\n",[125,3302,3300],{"__ignoreMap":123},[18,3304,676],{},[62,3306,3307,3310],{},[65,3308,3309],{},"Using concrete templates can solve the generalization of custom types.",[65,3311,3312],{},"Learning templates is not about writing templates, but about using the STL system-provided templates.",[13,3314,3316],{"id":3315},"class-template","class template",[98,3318,3320],{"id":3319},"class-template-syntax","Class template syntax",[18,3322,3323],{},"Class Template Purpose:",[62,3325,3326],{},[65,3327,3328,3329,111],{},"Create a generic class where the member data types do not need to be specifically defined, using a ",[22,3330,3331],{},"generic type",[18,3333,3334],{},[22,3335,116],{},[118,3337,3339],{"className":120,"code":3338,"language":122,"meta":123,"style":123},"template\u003Ctypename T>\n类\n",[125,3340,3341,3353],{"__ignoreMap":123},[128,3342,3343,3345,3347,3349,3351],{"class":130,"line":131},[128,3344,5],{"class":134},[128,3346,138],{"class":137},[128,3348,141],{"class":134},[128,3350,145],{"class":144},[128,3352,148],{"class":137},[128,3354,3355],{"class":130,"line":151},[128,3356,3357],{"class":137},"类\n",[18,3359,3360,160,3362,164],{},[22,3361,159],{},[125,3363,163],{},[18,3365,3366],{},[22,3367,169],{},[18,3369,172],{},[18,3371,175],{},[18,3373,178],{},[18,3375,3376],{},[22,3377,183],{},[118,3379,3381],{"className":120,"code":3380,"language":122,"meta":123,"style":123},"#include \u003Cstring>\n\u002F\u002F类模板\ntemplate\u003Cclass NameType, class AgeType> \nclass Person\n{\npublic:\n    Person(NameType name, AgeType age)\n    {\n        this->mName = name;\n        this->mAge = age;\n    }\n    void showPerson()\n    {\n        cout \u003C\u003C \"name: \" \u003C\u003C this->mName \u003C\u003C \" age: \" \u003C\u003C this->mAge \u003C\u003C endl;\n    }\npublic:\n    NameType mName;\n    AgeType mAge;\n};\n\nvoid test01()\n{\n    \u002F\u002F 指定NameType 为string类型，AgeType 为 int类型\n    Person\u003Cstring, int>P1(\"孙悟空\", 999);\n    P1.showPerson();\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[125,3382,3383,3389,3394,3415,3421,3425,3429,3449,3453,3464,3475,3479,3488,3492,3523,3527,3531,3536,3541,3545,3549,3557,3561,3566,3593,3603,3607,3611,3619,3623,3629,3633,3637,3645],{"__ignoreMap":123},[128,3384,3385,3387],{"class":130,"line":131},[128,3386,2629],{"class":134},[128,3388,2656],{"class":566},[128,3390,3391],{"class":130,"line":151},[128,3392,3393],{"class":199},"\u002F\u002F类模板\n",[128,3395,3396,3398,3400,3402,3405,3407,3409,3412],{"class":130,"line":203},[128,3397,5],{"class":134},[128,3399,138],{"class":137},[128,3401,726],{"class":134},[128,3403,3404],{"class":144}," NameType",[128,3406,222],{"class":137},[128,3408,726],{"class":134},[128,3410,3411],{"class":144}," AgeType",[128,3413,3414],{"class":137},"> \n",[128,3416,3417,3419],{"class":130,"line":233},[128,3418,726],{"class":134},[128,3420,2667],{"class":144},[128,3422,3423],{"class":130,"line":248},[128,3424,401],{"class":137},[128,3426,3427],{"class":130,"line":259},[128,3428,2676],{"class":134},[128,3430,3431,3433,3435,3438,3440,3442,3445,3447],{"class":130,"line":270},[128,3432,2681],{"class":144},[128,3434,212],{"class":137},[128,3436,3437],{"class":144},"NameType",[128,3439,2689],{"class":218},[128,3441,222],{"class":137},[128,3443,3444],{"class":144},"AgeType",[128,3446,2696],{"class":218},[128,3448,395],{"class":137},[128,3450,3451],{"class":130,"line":276},[128,3452,1231],{"class":137},[128,3454,3455,3457,3460,3462],{"class":130,"line":281},[128,3456,2707],{"class":468},[128,3458,3459],{"class":137},"->mName ",[128,3461,242],{"class":134},[128,3463,2715],{"class":137},[128,3465,3466,3468,3471,3473],{"class":130,"line":287},[128,3467,2707],{"class":468},[128,3469,3470],{"class":137},"->mAge ",[128,3472,242],{"class":134},[128,3474,2727],{"class":137},[128,3476,3477],{"class":130,"line":310},[128,3478,1362],{"class":137},[128,3480,3481,3483,3486],{"class":130,"line":322},[128,3482,2499],{"class":134},[128,3484,3485],{"class":144}," showPerson",[128,3487,450],{"class":137},[128,3489,3490],{"class":130,"line":331},[128,3491,1231],{"class":137},[128,3493,3494,3496,3498,3501,3503,3506,3508,3510,3513,3515,3517,3519,3521],{"class":130,"line":340},[128,3495,1432],{"class":137},[128,3497,563],{"class":134},[128,3499,3500],{"class":566}," \"name: \"",[128,3502,570],{"class":134},[128,3504,3505],{"class":468}," this",[128,3507,3459],{"class":137},[128,3509,563],{"class":134},[128,3511,3512],{"class":566}," \" age: \"",[128,3514,570],{"class":134},[128,3516,3505],{"class":468},[128,3518,3470],{"class":137},[128,3520,563],{"class":134},[128,3522,577],{"class":137},[128,3524,3525],{"class":130,"line":345},[128,3526,1362],{"class":137},[128,3528,3529],{"class":130,"line":350},[128,3530,2676],{"class":134},[128,3532,3533],{"class":130,"line":356},[128,3534,3535],{"class":137},"    NameType mName;\n",[128,3537,3538],{"class":130,"line":369},[128,3539,3540],{"class":137},"    AgeType mAge;\n",[128,3542,3543],{"class":130,"line":398},[128,3544,2748],{"class":137},[128,3546,3547],{"class":130,"line":404},[128,3548,194],{"emptyLinePlaceholder":193},[128,3550,3551,3553,3555],{"class":130,"line":414},[128,3552,206],{"class":134},[128,3554,447],{"class":144},[128,3556,450],{"class":137},[128,3558,3559],{"class":130,"line":423},[128,3560,401],{"class":137},[128,3562,3563],{"class":130,"line":432},[128,3564,3565],{"class":199},"    \u002F\u002F 指定NameType 为string类型，AgeType 为 int类型\n",[128,3567,3568,3570,3572,3575,3578,3581,3583,3586,3588,3591],{"class":130,"line":437},[128,3569,2681],{"class":137},[128,3571,138],{"class":134},[128,3573,3574],{"class":137},"string, ",[128,3576,3577],{"class":134},"int>",[128,3579,3580],{"class":144},"P1",[128,3582,212],{"class":137},[128,3584,3585],{"class":566},"\"孙悟空\"",[128,3587,222],{"class":137},[128,3589,3590],{"class":468},"999",[128,3592,1519],{"class":137},[128,3594,3595,3598,3601],{"class":130,"line":442},[128,3596,3597],{"class":137},"    P1.",[128,3599,3600],{"class":144},"showPerson",[128,3602,635],{"class":137},[128,3604,3605],{"class":130,"line":453},[128,3606,273],{"class":137},[128,3608,3609],{"class":130,"line":458},[128,3610,194],{"emptyLinePlaceholder":193},[128,3612,3613,3615,3617],{"class":130,"line":475},[128,3614,546],{"class":134},[128,3616,618],{"class":144},[128,3618,621],{"class":137},[128,3620,3621],{"class":130,"line":490},[128,3622,194],{"emptyLinePlaceholder":193},[128,3624,3625,3627],{"class":130,"line":496},[128,3626,632],{"class":144},[128,3628,635],{"class":137},[128,3630,3631],{"class":130,"line":502},[128,3632,194],{"emptyLinePlaceholder":193},[128,3634,3635],{"class":130,"line":507},[128,3636,194],{"emptyLinePlaceholder":193},[128,3638,3639,3641,3643],{"class":130,"line":513},[128,3640,651],{"class":134},[128,3642,654],{"class":468},[128,3644,472],{"class":137},[128,3646,3647],{"class":130,"line":519},[128,3648,273],{"class":137},[18,3650,3651],{},[22,3652,159],{},[118,3654,3657],{"className":3655,"code":3656,"language":671,"meta":123},[669],"name: 孙悟空 age: 999\n",[125,3658,3656],{"__ignoreMap":123},[18,3660,3661],{},"Summary: Class templates and function templates have similar syntax, with a class declared after the template keyword being called a class template.",[98,3663,3665],{"id":3664},"the-differences-between-class-templates-and-function-templates","The Differences Between Class Templates and Function Templates",[18,3667,3668],{},"The two main differences between class templates and function templates are as follows:",[2048,3670,3671,3674],{},[65,3672,3673],{},"类模板没有自动类型推导的使用方式，也就是说，在使用类模板时必须显式指定模板参数类型。函数模板支持自动类型推导，但类模板通常需要显式指定类型。不过，C++17引入了类模板参数推导（CTAD）特性，允许在某些情况下自动推导类模板的参数类型。",[65,3675,3676],{},"Class templates can have default arguments in the template parameter list.",[18,3678,3679],{},[22,3680,183],{},[118,3682,3684],{"className":120,"code":3683,"language":122,"meta":123,"style":123},"#include \u003Cstring>\n\u002F\u002F类模板\ntemplate\u003Cclass NameType, class AgeType = int> \nclass Person\n{\npublic:\n    Person(NameType name, AgeType age)\n    {\n        this->mName = name;\n        this->mAge = age;\n    }\n    void showPerson()\n    {\n        cout \u003C\u003C \"name: \" \u003C\u003C this->mName \u003C\u003C \" age: \" \u003C\u003C this->mAge \u003C\u003C endl;\n    }\npublic:\n    NameType mName;\n    AgeType mAge;\n};\n\n\u002F\u002F1、类模板没有自动类型推导的使用方式\nvoid test01()\n{\n    \u002F\u002F Person p(\"孙悟空\", 1000); \u002F\u002F 错误 类模板使用时候，不可以用自动类型推导\n    Person \u003Cstring ,int>p(\"孙悟空\", 1000); \u002F\u002F必须使用显示指定类型的方式，使用类模板\n    p.showPerson();\n}\n\n\u002F\u002F2、类模板在模板参数列表中可以有默认参数\nvoid test02()\n{\n    Person \u003Cstring> p(\"猪八戒\", 999); \u002F\u002F类模板中的模板参数列表 可以指定默认参数\n    p.showPerson();\n}\n\nint main() {\n\n    test01();\n\n    test02();\n\n\n    return 0;\n}\n",[125,3685,3686,3692,3696,3718,3724,3728,3732,3750,3754,3764,3774,3778,3786,3790,3818,3822,3826,3830,3834,3838,3842,3847,3855,3859,3867,3895,3904,3908,3912,3917,3925,3929,3956,3964,3968,3972,3980,3984,3990,3994,4000,4004,4008,4016],{"__ignoreMap":123},[128,3687,3688,3690],{"class":130,"line":131},[128,3689,2629],{"class":134},[128,3691,2656],{"class":566},[128,3693,3694],{"class":130,"line":151},[128,3695,3393],{"class":199},[128,3697,3698,3700,3702,3704,3706,3708,3710,3712,3715],{"class":130,"line":203},[128,3699,5],{"class":134},[128,3701,138],{"class":137},[128,3703,726],{"class":134},[128,3705,3404],{"class":144},[128,3707,222],{"class":137},[128,3709,726],{"class":134},[128,3711,3411],{"class":144},[128,3713,3714],{"class":134}," =",[128,3716,3717],{"class":137}," int> \n",[128,3719,3720,3722],{"class":130,"line":233},[128,3721,726],{"class":134},[128,3723,2667],{"class":144},[128,3725,3726],{"class":130,"line":248},[128,3727,401],{"class":137},[128,3729,3730],{"class":130,"line":259},[128,3731,2676],{"class":134},[128,3733,3734,3736,3738,3740,3742,3744,3746,3748],{"class":130,"line":270},[128,3735,2681],{"class":144},[128,3737,212],{"class":137},[128,3739,3437],{"class":144},[128,3741,2689],{"class":218},[128,3743,222],{"class":137},[128,3745,3444],{"class":144},[128,3747,2696],{"class":218},[128,3749,395],{"class":137},[128,3751,3752],{"class":130,"line":276},[128,3753,1231],{"class":137},[128,3755,3756,3758,3760,3762],{"class":130,"line":281},[128,3757,2707],{"class":468},[128,3759,3459],{"class":137},[128,3761,242],{"class":134},[128,3763,2715],{"class":137},[128,3765,3766,3768,3770,3772],{"class":130,"line":287},[128,3767,2707],{"class":468},[128,3769,3470],{"class":137},[128,3771,242],{"class":134},[128,3773,2727],{"class":137},[128,3775,3776],{"class":130,"line":310},[128,3777,1362],{"class":137},[128,3779,3780,3782,3784],{"class":130,"line":322},[128,3781,2499],{"class":134},[128,3783,3485],{"class":144},[128,3785,450],{"class":137},[128,3787,3788],{"class":130,"line":331},[128,3789,1231],{"class":137},[128,3791,3792,3794,3796,3798,3800,3802,3804,3806,3808,3810,3812,3814,3816],{"class":130,"line":340},[128,3793,1432],{"class":137},[128,3795,563],{"class":134},[128,3797,3500],{"class":566},[128,3799,570],{"class":134},[128,3801,3505],{"class":468},[128,3803,3459],{"class":137},[128,3805,563],{"class":134},[128,3807,3512],{"class":566},[128,3809,570],{"class":134},[128,3811,3505],{"class":468},[128,3813,3470],{"class":137},[128,3815,563],{"class":134},[128,3817,577],{"class":137},[128,3819,3820],{"class":130,"line":345},[128,3821,1362],{"class":137},[128,3823,3824],{"class":130,"line":350},[128,3825,2676],{"class":134},[128,3827,3828],{"class":130,"line":356},[128,3829,3535],{"class":137},[128,3831,3832],{"class":130,"line":369},[128,3833,3540],{"class":137},[128,3835,3836],{"class":130,"line":398},[128,3837,2748],{"class":137},[128,3839,3840],{"class":130,"line":404},[128,3841,194],{"emptyLinePlaceholder":193},[128,3843,3844],{"class":130,"line":414},[128,3845,3846],{"class":199},"\u002F\u002F1、类模板没有自动类型推导的使用方式\n",[128,3848,3849,3851,3853],{"class":130,"line":423},[128,3850,206],{"class":134},[128,3852,447],{"class":144},[128,3854,450],{"class":137},[128,3856,3857],{"class":130,"line":432},[128,3858,401],{"class":137},[128,3860,3861,3864],{"class":130,"line":437},[128,3862,3863],{"class":199},"    \u002F\u002F Person p(\"孙悟空\", 1000);",[128,3865,3866],{"class":199}," \u002F\u002F 错误 类模板使用时候，不可以用自动类型推导\n",[128,3868,3869,3871,3873,3876,3878,3880,3882,3884,3886,3889,3892],{"class":130,"line":442},[128,3870,3108],{"class":137},[128,3872,138],{"class":134},[128,3874,3875],{"class":137},"string ,",[128,3877,3577],{"class":134},[128,3879,18],{"class":144},[128,3881,212],{"class":137},[128,3883,3585],{"class":566},[128,3885,222],{"class":137},[128,3887,3888],{"class":468},"1000",[128,3890,3891],{"class":137},");",[128,3893,3894],{"class":199}," \u002F\u002F必须使用显示指定类型的方式，使用类模板\n",[128,3896,3897,3900,3902],{"class":130,"line":453},[128,3898,3899],{"class":137},"    p.",[128,3901,3600],{"class":144},[128,3903,635],{"class":137},[128,3905,3906],{"class":130,"line":458},[128,3907,273],{"class":137},[128,3909,3910],{"class":130,"line":475},[128,3911,194],{"emptyLinePlaceholder":193},[128,3913,3914],{"class":130,"line":490},[128,3915,3916],{"class":199},"\u002F\u002F2、类模板在模板参数列表中可以有默认参数\n",[128,3918,3919,3921,3923],{"class":130,"line":496},[128,3920,206],{"class":134},[128,3922,934],{"class":144},[128,3924,450],{"class":137},[128,3926,3927],{"class":130,"line":502},[128,3928,401],{"class":137},[128,3930,3931,3933,3935,3937,3939,3942,3944,3947,3949,3951,3953],{"class":130,"line":507},[128,3932,3108],{"class":137},[128,3934,138],{"class":134},[128,3936,2686],{"class":137},[128,3938,1160],{"class":134},[128,3940,3941],{"class":144}," p",[128,3943,212],{"class":137},[128,3945,3946],{"class":566},"\"猪八戒\"",[128,3948,222],{"class":137},[128,3950,3590],{"class":468},[128,3952,3891],{"class":137},[128,3954,3955],{"class":199}," \u002F\u002F类模板中的模板参数列表 可以指定默认参数\n",[128,3957,3958,3960,3962],{"class":130,"line":513},[128,3959,3899],{"class":137},[128,3961,3600],{"class":144},[128,3963,635],{"class":137},[128,3965,3966],{"class":130,"line":519},[128,3967,273],{"class":137},[128,3969,3970],{"class":130,"line":528},[128,3971,194],{"emptyLinePlaceholder":193},[128,3973,3974,3976,3978],{"class":130,"line":533},[128,3975,546],{"class":134},[128,3977,618],{"class":144},[128,3979,621],{"class":137},[128,3981,3982],{"class":130,"line":539},[128,3983,194],{"emptyLinePlaceholder":193},[128,3985,3986,3988],{"class":130,"line":552},[128,3987,632],{"class":144},[128,3989,635],{"class":137},[128,3991,3992],{"class":130,"line":557},[128,3993,194],{"emptyLinePlaceholder":193},[128,3995,3996,3998],{"class":130,"line":580},[128,3997,994],{"class":144},[128,3999,635],{"class":137},[128,4001,4002],{"class":130,"line":598},[128,4003,194],{"emptyLinePlaceholder":193},[128,4005,4006],{"class":130,"line":603},[128,4007,194],{"emptyLinePlaceholder":193},[128,4009,4010,4012,4014],{"class":130,"line":608},[128,4011,651],{"class":134},[128,4013,654],{"class":468},[128,4015,472],{"class":137},[128,4017,4018],{"class":130,"line":613},[128,4019,273],{"class":137},[18,4021,4022],{},[22,4023,159],{},[118,4025,4028],{"className":4026,"code":4027,"language":671,"meta":123},[669],"name: 孙悟空 age: 1000\nname: 猪八戒 age: 999\n",[125,4029,4027],{"__ignoreMap":123},[18,4031,676],{},[62,4033,4034,4037],{},[65,4035,4036],{},"Class templates can only be used with explicit type specification.",[65,4038,4039],{},"The template parameter list in a class template can have default parameters.",[98,4041,4043],{"id":4042},"member-function-instantiation-timing-in-class-templates","Member function instantiation timing in class templates",[18,4045,4046],{},"The timing of member function creation in class templates differs from that in ordinary classes:",[62,4048,4049,4052],{},[65,4050,4051],{},"Member functions in ordinary classes are inherently part of the class from the start.",[65,4053,4054],{},"Member functions in class templates are created only when called.",[18,4056,4057],{},[22,4058,183],{},[118,4060,4062],{"className":120,"code":4061,"language":122,"meta":123,"style":123},"class Person1\n{\npublic:\n    void showPerson1()\n    {\n        cout \u003C\u003C \"Person1 show\" \u003C\u003C endl;\n    }\n};\n\nclass Person2\n{\npublic:\n    void showPerson2()\n    {\n        cout \u003C\u003C \"Person2 show\" \u003C\u003C endl;\n    }\n};\n\ntemplate\u003Cclass T>\nclass MyClass\n{\npublic:\n    T obj;\n\n    \u002F\u002F类模板中的成员函数，并不是一开始就创建的，而是在模板调用时再生成\n\n    void fun1() { obj.showPerson1(); }\n    void fun2() { obj.showPerson2(); }\n\n};\n\nvoid test01()\n{\n    MyClass\u003CPerson1> m;\n    \n    m.fun1();\n\n    \u002F\u002Fm.fun2();\u002F\u002F编译会出错，说明函数调用才会去创建成员函数\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[125,4063,4064,4071,4075,4079,4088,4092,4105,4109,4113,4117,4124,4128,4132,4141,4145,4158,4162,4166,4170,4182,4189,4193,4197,4202,4206,4211,4215,4231,4245,4249,4253,4257,4265,4269,4284,4288,4298,4302,4307,4311,4315,4323,4327,4333,4337,4341,4349],{"__ignoreMap":123},[128,4065,4066,4068],{"class":130,"line":131},[128,4067,726],{"class":134},[128,4069,4070],{"class":144}," Person1\n",[128,4072,4073],{"class":130,"line":151},[128,4074,401],{"class":137},[128,4076,4077],{"class":130,"line":203},[128,4078,2676],{"class":134},[128,4080,4081,4083,4086],{"class":130,"line":233},[128,4082,2499],{"class":134},[128,4084,4085],{"class":144}," showPerson1",[128,4087,450],{"class":137},[128,4089,4090],{"class":130,"line":248},[128,4091,1231],{"class":137},[128,4093,4094,4096,4098,4101,4103],{"class":130,"line":259},[128,4095,1432],{"class":137},[128,4097,563],{"class":134},[128,4099,4100],{"class":566}," \"Person1 show\"",[128,4102,570],{"class":134},[128,4104,577],{"class":137},[128,4106,4107],{"class":130,"line":270},[128,4108,1362],{"class":137},[128,4110,4111],{"class":130,"line":276},[128,4112,2748],{"class":137},[128,4114,4115],{"class":130,"line":281},[128,4116,194],{"emptyLinePlaceholder":193},[128,4118,4119,4121],{"class":130,"line":287},[128,4120,726],{"class":134},[128,4122,4123],{"class":144}," Person2\n",[128,4125,4126],{"class":130,"line":310},[128,4127,401],{"class":137},[128,4129,4130],{"class":130,"line":322},[128,4131,2676],{"class":134},[128,4133,4134,4136,4139],{"class":130,"line":331},[128,4135,2499],{"class":134},[128,4137,4138],{"class":144}," showPerson2",[128,4140,450],{"class":137},[128,4142,4143],{"class":130,"line":340},[128,4144,1231],{"class":137},[128,4146,4147,4149,4151,4154,4156],{"class":130,"line":345},[128,4148,1432],{"class":137},[128,4150,563],{"class":134},[128,4152,4153],{"class":566}," \"Person2 show\"",[128,4155,570],{"class":134},[128,4157,577],{"class":137},[128,4159,4160],{"class":130,"line":350},[128,4161,1362],{"class":137},[128,4163,4164],{"class":130,"line":356},[128,4165,2748],{"class":137},[128,4167,4168],{"class":130,"line":369},[128,4169,194],{"emptyLinePlaceholder":193},[128,4171,4172,4174,4176,4178,4180],{"class":130,"line":398},[128,4173,5],{"class":134},[128,4175,138],{"class":137},[128,4177,726],{"class":134},[128,4179,145],{"class":144},[128,4181,148],{"class":137},[128,4183,4184,4186],{"class":130,"line":404},[128,4185,726],{"class":134},[128,4187,4188],{"class":144}," MyClass\n",[128,4190,4191],{"class":130,"line":414},[128,4192,401],{"class":137},[128,4194,4195],{"class":130,"line":423},[128,4196,2676],{"class":134},[128,4198,4199],{"class":130,"line":432},[128,4200,4201],{"class":137},"    T obj;\n",[128,4203,4204],{"class":130,"line":437},[128,4205,194],{"emptyLinePlaceholder":193},[128,4207,4208],{"class":130,"line":442},[128,4209,4210],{"class":199},"    \u002F\u002F类模板中的成员函数，并不是一开始就创建的，而是在模板调用时再生成\n",[128,4212,4213],{"class":130,"line":453},[128,4214,194],{"emptyLinePlaceholder":193},[128,4216,4217,4219,4222,4225,4228],{"class":130,"line":458},[128,4218,2499],{"class":134},[128,4220,4221],{"class":144}," fun1",[128,4223,4224],{"class":137},"() { obj.",[128,4226,4227],{"class":144},"showPerson1",[128,4229,4230],{"class":137},"(); }\n",[128,4232,4233,4235,4238,4240,4243],{"class":130,"line":475},[128,4234,2499],{"class":134},[128,4236,4237],{"class":144}," fun2",[128,4239,4224],{"class":137},[128,4241,4242],{"class":144},"showPerson2",[128,4244,4230],{"class":137},[128,4246,4247],{"class":130,"line":490},[128,4248,194],{"emptyLinePlaceholder":193},[128,4250,4251],{"class":130,"line":496},[128,4252,2748],{"class":137},[128,4254,4255],{"class":130,"line":502},[128,4256,194],{"emptyLinePlaceholder":193},[128,4258,4259,4261,4263],{"class":130,"line":507},[128,4260,206],{"class":134},[128,4262,447],{"class":144},[128,4264,450],{"class":137},[128,4266,4267],{"class":130,"line":513},[128,4268,401],{"class":137},[128,4270,4271,4274,4276,4279,4281],{"class":130,"line":519},[128,4272,4273],{"class":137},"    MyClass",[128,4275,138],{"class":134},[128,4277,4278],{"class":137},"Person1",[128,4280,1160],{"class":134},[128,4282,4283],{"class":137}," m;\n",[128,4285,4286],{"class":130,"line":528},[128,4287,493],{"class":137},[128,4289,4290,4293,4296],{"class":130,"line":533},[128,4291,4292],{"class":137},"    m.",[128,4294,4295],{"class":144},"fun1",[128,4297,635],{"class":137},[128,4299,4300],{"class":130,"line":539},[128,4301,194],{"emptyLinePlaceholder":193},[128,4303,4304],{"class":130,"line":552},[128,4305,4306],{"class":199},"    \u002F\u002Fm.fun2();\u002F\u002F编译会出错，说明函数调用才会去创建成员函数\n",[128,4308,4309],{"class":130,"line":557},[128,4310,273],{"class":137},[128,4312,4313],{"class":130,"line":580},[128,4314,194],{"emptyLinePlaceholder":193},[128,4316,4317,4319,4321],{"class":130,"line":598},[128,4318,546],{"class":134},[128,4320,618],{"class":144},[128,4322,621],{"class":137},[128,4324,4325],{"class":130,"line":603},[128,4326,194],{"emptyLinePlaceholder":193},[128,4328,4329,4331],{"class":130,"line":608},[128,4330,632],{"class":144},[128,4332,635],{"class":137},[128,4334,4335],{"class":130,"line":613},[128,4336,194],{"emptyLinePlaceholder":193},[128,4338,4339],{"class":130,"line":624},[128,4340,194],{"emptyLinePlaceholder":193},[128,4342,4343,4345,4347],{"class":130,"line":629},[128,4344,651],{"class":134},[128,4346,654],{"class":468},[128,4348,472],{"class":137},[128,4350,4351],{"class":130,"line":638},[128,4352,273],{"class":137},[18,4354,4355],{},[22,4356,159],{},[118,4358,4361],{"className":4359,"code":4360,"language":671,"meta":123},[669],"Person1 show\n",[125,4362,4360],{"__ignoreMap":123},[18,4364,4365],{},"Summary: Member functions in class templates are not created at the outset; they are instantiated only when called.",[98,4367,4369],{"id":4368},"class-template-objects-as-function-parameters","Class template objects as function parameters",[18,4371,4372],{},"Learning Objectives:",[62,4374,4375],{},[65,4376,4377],{},"The ways to pass objects instantiated from a class template as arguments to functions.",[18,4379,4380],{},"There are three input methods:",[2048,4382,4383,4386,4389],{},[65,4384,4385],{},"Specify the type of input directly display the object's data type",[65,4387,4388],{},"Parameter Templating --- Convert object parameters into templates for passing",[65,4390,4391],{},"Templatize the entire class --- pass this object type as a template parameter.",[18,4393,4394],{},[22,4395,183],{},[118,4397,4399],{"className":120,"code":4398,"language":122,"meta":123,"style":123},"#include \u003Cstring>\n\u002F\u002F类模板\ntemplate\u003Cclass NameType, class AgeType = int> \nclass Person\n{\npublic:\n    Person(NameType name, AgeType age)\n    {\n        this->mName = name;\n        this->mAge = age;\n    }\n    void showPerson()\n    {\n        cout \u003C\u003C \"name: \" \u003C\u003C this->mName \u003C\u003C \" age: \" \u003C\u003C this->mAge \u003C\u003C endl;\n    }\npublic:\n    NameType mName;\n    AgeType mAge;\n};\n\n\u002F\u002F1、指定传入的类型\nvoid printPerson1(Person\u003Cstring, int> &p) \n{\n    p.showPerson();\n}\nvoid test01()\n{\n    Person \u003Cstring, int >p(\"孙悟空\", 100);\n    printPerson1(p);\n}\n\n\u002F\u002F2、参数模板化\ntemplate \u003Cclass T1, class T2>\nvoid printPerson2(Person\u003CT1, T2>&p)\n{\n    p.showPerson();\n    cout \u003C\u003C \"T1的类型为： \" \u003C\u003C typeid(T1).name() \u003C\u003C endl;\n    cout \u003C\u003C \"T2的类型为： \" \u003C\u003C typeid(T2).name() \u003C\u003C endl;\n}\nvoid test02()\n{\n    Person \u003Cstring, int >p(\"猪八戒\", 90);\n    printPerson2(p);\n}\n\n\u002F\u002F3、整个类模板化\ntemplate\u003Cclass T>\nvoid printPerson3(T & p)\n{\n    cout \u003C\u003C \"T的类型为： \" \u003C\u003C typeid(T).name() \u003C\u003C endl;\n    p.showPerson();\n\n}\nvoid test03()\n{\n    Person \u003Cstring, int >p(\"唐僧\", 30);\n    printPerson3(p);\n}\n\nint main() {\n\n    test01();\n    test02();\n    test03();\n\n\n    return 0;\n}\n",[125,4400,4401,4407,4411,4431,4437,4441,4445,4463,4467,4477,4487,4491,4499,4503,4531,4535,4539,4543,4547,4551,4555,4560,4588,4592,4600,4604,4612,4616,4642,4650,4654,4658,4663,4684,4713,4717,4725,4752,4776,4780,4788,4792,4817,4824,4828,4832,4837,4849,4866,4870,4894,4902,4906,4910,4919,4923,4949,4956,4960,4964,4972,4976,4982,4988,4995,4999,5003,5011],{"__ignoreMap":123},[128,4402,4403,4405],{"class":130,"line":131},[128,4404,2629],{"class":134},[128,4406,2656],{"class":566},[128,4408,4409],{"class":130,"line":151},[128,4410,3393],{"class":199},[128,4412,4413,4415,4417,4419,4421,4423,4425,4427,4429],{"class":130,"line":203},[128,4414,5],{"class":134},[128,4416,138],{"class":137},[128,4418,726],{"class":134},[128,4420,3404],{"class":144},[128,4422,222],{"class":137},[128,4424,726],{"class":134},[128,4426,3411],{"class":144},[128,4428,3714],{"class":134},[128,4430,3717],{"class":137},[128,4432,4433,4435],{"class":130,"line":233},[128,4434,726],{"class":134},[128,4436,2667],{"class":144},[128,4438,4439],{"class":130,"line":248},[128,4440,401],{"class":137},[128,4442,4443],{"class":130,"line":259},[128,4444,2676],{"class":134},[128,4446,4447,4449,4451,4453,4455,4457,4459,4461],{"class":130,"line":270},[128,4448,2681],{"class":144},[128,4450,212],{"class":137},[128,4452,3437],{"class":144},[128,4454,2689],{"class":218},[128,4456,222],{"class":137},[128,4458,3444],{"class":144},[128,4460,2696],{"class":218},[128,4462,395],{"class":137},[128,4464,4465],{"class":130,"line":276},[128,4466,1231],{"class":137},[128,4468,4469,4471,4473,4475],{"class":130,"line":281},[128,4470,2707],{"class":468},[128,4472,3459],{"class":137},[128,4474,242],{"class":134},[128,4476,2715],{"class":137},[128,4478,4479,4481,4483,4485],{"class":130,"line":287},[128,4480,2707],{"class":468},[128,4482,3470],{"class":137},[128,4484,242],{"class":134},[128,4486,2727],{"class":137},[128,4488,4489],{"class":130,"line":310},[128,4490,1362],{"class":137},[128,4492,4493,4495,4497],{"class":130,"line":322},[128,4494,2499],{"class":134},[128,4496,3485],{"class":144},[128,4498,450],{"class":137},[128,4500,4501],{"class":130,"line":331},[128,4502,1231],{"class":137},[128,4504,4505,4507,4509,4511,4513,4515,4517,4519,4521,4523,4525,4527,4529],{"class":130,"line":340},[128,4506,1432],{"class":137},[128,4508,563],{"class":134},[128,4510,3500],{"class":566},[128,4512,570],{"class":134},[128,4514,3505],{"class":468},[128,4516,3459],{"class":137},[128,4518,563],{"class":134},[128,4520,3512],{"class":566},[128,4522,570],{"class":134},[128,4524,3505],{"class":468},[128,4526,3470],{"class":137},[128,4528,563],{"class":134},[128,4530,577],{"class":137},[128,4532,4533],{"class":130,"line":345},[128,4534,1362],{"class":137},[128,4536,4537],{"class":130,"line":350},[128,4538,2676],{"class":134},[128,4540,4541],{"class":130,"line":356},[128,4542,3535],{"class":137},[128,4544,4545],{"class":130,"line":369},[128,4546,3540],{"class":137},[128,4548,4549],{"class":130,"line":398},[128,4550,2748],{"class":137},[128,4552,4553],{"class":130,"line":404},[128,4554,194],{"emptyLinePlaceholder":193},[128,4556,4557],{"class":130,"line":414},[128,4558,4559],{"class":199},"\u002F\u002F1、指定传入的类型\n",[128,4561,4562,4564,4567,4569,4571,4573,4575,4577,4579,4582,4584,4586],{"class":130,"line":423},[128,4563,206],{"class":134},[128,4565,4566],{"class":144}," printPerson1",[128,4568,212],{"class":137},[128,4570,2887],{"class":144},[128,4572,138],{"class":137},[128,4574,2686],{"class":144},[128,4576,222],{"class":137},[128,4578,546],{"class":134},[128,4580,4581],{"class":137},"> ",[128,4583,382],{"class":134},[128,4585,18],{"class":218},[128,4587,2154],{"class":137},[128,4589,4590],{"class":130,"line":432},[128,4591,401],{"class":137},[128,4593,4594,4596,4598],{"class":130,"line":437},[128,4595,3899],{"class":137},[128,4597,3600],{"class":144},[128,4599,635],{"class":137},[128,4601,4602],{"class":130,"line":442},[128,4603,273],{"class":137},[128,4605,4606,4608,4610],{"class":130,"line":453},[128,4607,206],{"class":134},[128,4609,447],{"class":144},[128,4611,450],{"class":137},[128,4613,4614],{"class":130,"line":458},[128,4615,401],{"class":137},[128,4617,4618,4620,4622,4624,4626,4629,4631,4633,4635,4637,4640],{"class":130,"line":475},[128,4619,3108],{"class":137},[128,4621,138],{"class":134},[128,4623,3574],{"class":137},[128,4625,546],{"class":134},[128,4627,4628],{"class":134}," >",[128,4630,18],{"class":144},[128,4632,212],{"class":137},[128,4634,3585],{"class":566},[128,4636,222],{"class":137},[128,4638,4639],{"class":468},"100",[128,4641,1519],{"class":137},[128,4643,4644,4647],{"class":130,"line":490},[128,4645,4646],{"class":144},"    printPerson1",[128,4648,4649],{"class":137},"(p);\n",[128,4651,4652],{"class":130,"line":496},[128,4653,273],{"class":137},[128,4655,4656],{"class":130,"line":502},[128,4657,194],{"emptyLinePlaceholder":193},[128,4659,4660],{"class":130,"line":507},[128,4661,4662],{"class":199},"\u002F\u002F2、参数模板化\n",[128,4664,4665,4667,4670,4672,4675,4677,4679,4682],{"class":130,"line":513},[128,4666,5],{"class":134},[128,4668,4669],{"class":137}," \u003C",[128,4671,726],{"class":134},[128,4673,4674],{"class":144}," T1",[128,4676,222],{"class":137},[128,4678,726],{"class":134},[128,4680,4681],{"class":144}," T2",[128,4683,148],{"class":137},[128,4685,4686,4688,4691,4693,4695,4697,4700,4702,4705,4707,4709,4711],{"class":130,"line":519},[128,4687,206],{"class":134},[128,4689,4690],{"class":144}," printPerson2",[128,4692,212],{"class":137},[128,4694,2887],{"class":144},[128,4696,138],{"class":137},[128,4698,4699],{"class":144},"T1",[128,4701,222],{"class":137},[128,4703,4704],{"class":144},"T2",[128,4706,1160],{"class":137},[128,4708,382],{"class":134},[128,4710,18],{"class":218},[128,4712,395],{"class":137},[128,4714,4715],{"class":130,"line":528},[128,4716,401],{"class":137},[128,4718,4719,4721,4723],{"class":130,"line":533},[128,4720,3899],{"class":137},[128,4722,3600],{"class":144},[128,4724,635],{"class":137},[128,4726,4727,4729,4731,4734,4736,4739,4742,4745,4748,4750],{"class":130,"line":539},[128,4728,560],{"class":137},[128,4730,563],{"class":134},[128,4732,4733],{"class":566}," \"T1的类型为： \"",[128,4735,570],{"class":134},[128,4737,4738],{"class":134}," typeid",[128,4740,4741],{"class":137},"(T1).",[128,4743,4744],{"class":144},"name",[128,4746,4747],{"class":137},"() ",[128,4749,563],{"class":134},[128,4751,577],{"class":137},[128,4753,4754,4756,4758,4761,4763,4765,4768,4770,4772,4774],{"class":130,"line":552},[128,4755,560],{"class":137},[128,4757,563],{"class":134},[128,4759,4760],{"class":566}," \"T2的类型为： \"",[128,4762,570],{"class":134},[128,4764,4738],{"class":134},[128,4766,4767],{"class":137},"(T2).",[128,4769,4744],{"class":144},[128,4771,4747],{"class":137},[128,4773,563],{"class":134},[128,4775,577],{"class":137},[128,4777,4778],{"class":130,"line":557},[128,4779,273],{"class":137},[128,4781,4782,4784,4786],{"class":130,"line":580},[128,4783,206],{"class":134},[128,4785,934],{"class":144},[128,4787,450],{"class":137},[128,4789,4790],{"class":130,"line":598},[128,4791,401],{"class":137},[128,4793,4794,4796,4798,4800,4802,4804,4806,4808,4810,4812,4815],{"class":130,"line":603},[128,4795,3108],{"class":137},[128,4797,138],{"class":134},[128,4799,3574],{"class":137},[128,4801,546],{"class":134},[128,4803,4628],{"class":134},[128,4805,18],{"class":144},[128,4807,212],{"class":137},[128,4809,3946],{"class":566},[128,4811,222],{"class":137},[128,4813,4814],{"class":468},"90",[128,4816,1519],{"class":137},[128,4818,4819,4822],{"class":130,"line":608},[128,4820,4821],{"class":144},"    printPerson2",[128,4823,4649],{"class":137},[128,4825,4826],{"class":130,"line":613},[128,4827,273],{"class":137},[128,4829,4830],{"class":130,"line":624},[128,4831,194],{"emptyLinePlaceholder":193},[128,4833,4834],{"class":130,"line":629},[128,4835,4836],{"class":199},"\u002F\u002F3、整个类模板化\n",[128,4838,4839,4841,4843,4845,4847],{"class":130,"line":638},[128,4840,5],{"class":134},[128,4842,138],{"class":137},[128,4844,726],{"class":134},[128,4846,145],{"class":144},[128,4848,148],{"class":137},[128,4850,4851,4853,4856,4858,4860,4862,4864],{"class":130,"line":643},[128,4852,206],{"class":134},[128,4854,4855],{"class":144}," printPerson3",[128,4857,212],{"class":137},[128,4859,379],{"class":144},[128,4861,1097],{"class":134},[128,4863,3941],{"class":218},[128,4865,395],{"class":137},[128,4867,4868],{"class":130,"line":648},[128,4869,401],{"class":137},[128,4871,4872,4874,4876,4879,4881,4883,4886,4888,4890,4892],{"class":130,"line":659},[128,4873,560],{"class":137},[128,4875,563],{"class":134},[128,4877,4878],{"class":566}," \"T的类型为： \"",[128,4880,570],{"class":134},[128,4882,4738],{"class":134},[128,4884,4885],{"class":137},"(T).",[128,4887,4744],{"class":144},[128,4889,4747],{"class":137},[128,4891,563],{"class":134},[128,4893,577],{"class":137},[128,4895,4896,4898,4900],{"class":130,"line":1620},[128,4897,3899],{"class":137},[128,4899,3600],{"class":144},[128,4901,635],{"class":137},[128,4903,4904],{"class":130,"line":1644},[128,4905,194],{"emptyLinePlaceholder":193},[128,4907,4908],{"class":130,"line":1652},[128,4909,273],{"class":137},[128,4911,4912,4914,4917],{"class":130,"line":1659},[128,4913,206],{"class":134},[128,4915,4916],{"class":144}," test03",[128,4918,450],{"class":137},[128,4920,4921],{"class":130,"line":1664},[128,4922,401],{"class":137},[128,4924,4925,4927,4929,4931,4933,4935,4937,4939,4942,4944,4947],{"class":130,"line":1669},[128,4926,3108],{"class":137},[128,4928,138],{"class":134},[128,4930,3574],{"class":137},[128,4932,546],{"class":134},[128,4934,4628],{"class":134},[128,4936,18],{"class":144},[128,4938,212],{"class":137},[128,4940,4941],{"class":566},"\"唐僧\"",[128,4943,222],{"class":137},[128,4945,4946],{"class":468},"30",[128,4948,1519],{"class":137},[128,4950,4951,4954],{"class":130,"line":1678},[128,4952,4953],{"class":144},"    printPerson3",[128,4955,4649],{"class":137},[128,4957,4958],{"class":130,"line":1683},[128,4959,273],{"class":137},[128,4961,4962],{"class":130,"line":1690},[128,4963,194],{"emptyLinePlaceholder":193},[128,4965,4966,4968,4970],{"class":130,"line":1697},[128,4967,546],{"class":134},[128,4969,618],{"class":144},[128,4971,621],{"class":137},[128,4973,4974],{"class":130,"line":1702},[128,4975,194],{"emptyLinePlaceholder":193},[128,4977,4978,4980],{"class":130,"line":1707},[128,4979,632],{"class":144},[128,4981,635],{"class":137},[128,4983,4984,4986],{"class":130,"line":1716},[128,4985,994],{"class":144},[128,4987,635],{"class":137},[128,4989,4990,4993],{"class":130,"line":3105},[128,4991,4992],{"class":144},"    test03",[128,4994,635],{"class":137},[128,4996,4997],{"class":130,"line":3125},[128,4998,194],{"emptyLinePlaceholder":193},[128,5000,5001],{"class":130,"line":3142},[128,5002,194],{"emptyLinePlaceholder":193},[128,5004,5005,5007,5009],{"class":130,"line":3148},[128,5006,651],{"class":134},[128,5008,654],{"class":468},[128,5010,472],{"class":137},[128,5012,5013],{"class":130,"line":3154},[128,5014,273],{"class":137},[18,5016,5017],{},[22,5018,1723],{},[118,5020,5023],{"className":5021,"code":5022,"language":671,"meta":123},[669],"name: 孙悟空 age: 100\nname: 猪八戒 age: 90\nT1的类型为： NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE\nT2的类型为： i\nT的类型为： 6PersonINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiE\nname: 唐僧 age: 30\n",[125,5024,5022],{"__ignoreMap":123},[18,5026,676],{},[62,5028,5029,5032],{},[65,5030,5031],{},"Objects created through class templates can be passed to functions in three ways.",[65,5033,5034],{},"The more widely used one is the first type: specifying the type passed in.",[98,5036,5038],{"id":5037},"class-templates-and-inheritance","Class Templates and Inheritance",[18,5040,5041],{},"When class templates encounter inheritance, pay attention to the following points:",[62,5043,5044,5047,5050],{},[65,5045,5046],{},"When a subclass inherits from a parent class that is a class template, the subclass must specify the type of T from the parent class when declaring itself.",[65,5048,5049],{},"If not specified, the compiler is unable to allocate memory for the subclass.",[65,5051,5052],{},"If you want to flexibly specify the type of T in the base class, the subclass also needs to become a class template. Otherwise, you would be hardcoding the type parameter in the subclass.",[18,5054,5055,5056,5058],{},"For example, this approach fixes the base class's T as ",[125,5057,546],{},":",[118,5060,5062],{"className":120,"code":5061,"language":122,"meta":123,"style":123},"class DerivedClass : public BaseClass\u003Cint> {\n    \u002F\u002F ...\n};\n",[125,5063,5064,5087,5092],{"__ignoreMap":123},[128,5065,5066,5068,5071,5074,5077,5080,5082,5084],{"class":130,"line":131},[128,5067,726],{"class":134},[128,5069,5070],{"class":144}," DerivedClass",[128,5072,5073],{"class":137}," : ",[128,5075,5076],{"class":134},"public",[128,5078,5079],{"class":144}," BaseClass",[128,5081,138],{"class":137},[128,5083,546],{"class":134},[128,5085,5086],{"class":137},"> {\n",[128,5088,5089],{"class":130,"line":151},[128,5090,5091],{"class":199},"    \u002F\u002F ...\n",[128,5093,5094],{"class":130,"line":203},[128,5095,2748],{"class":137},[18,5097,5098],{},"To keep it flexible, you should make the subclass a template:",[118,5100,5102],{"className":120,"code":5101,"language":122,"meta":123,"style":123},"template \u003Ctypename T>\nclass DerivedClass : public BaseClass\u003CT> {\n    \u002F\u002F ...\n};\n",[125,5103,5104,5116,5134,5138],{"__ignoreMap":123},[128,5105,5106,5108,5110,5112,5114],{"class":130,"line":131},[128,5107,5],{"class":134},[128,5109,4669],{"class":137},[128,5111,141],{"class":134},[128,5113,145],{"class":144},[128,5115,148],{"class":137},[128,5117,5118,5120,5122,5124,5126,5128,5130,5132],{"class":130,"line":151},[128,5119,726],{"class":134},[128,5121,5070],{"class":144},[128,5123,5073],{"class":137},[128,5125,5076],{"class":134},[128,5127,5079],{"class":144},[128,5129,138],{"class":137},[128,5131,379],{"class":144},[128,5133,5086],{"class":137},[128,5135,5136],{"class":130,"line":203},[128,5137,5091],{"class":199},[128,5139,5140],{"class":130,"line":233},[128,5141,2748],{"class":137},[18,5143,5144],{},"This way, you can specify the type when instantiating the subclass:",[118,5146,5148],{"className":120,"code":5147,"language":122,"meta":123,"style":123},"DerivedClass\u003Cdouble> obj;  \u002F\u002F Passes 'double' to the base class's T\n",[125,5149,5150],{"__ignoreMap":123},[128,5151,5152,5155,5158,5161],{"class":130,"line":131},[128,5153,5154],{"class":137},"DerivedClass",[128,5156,5157],{"class":134},"\u003Cdouble>",[128,5159,5160],{"class":137}," obj;",[128,5162,5163],{"class":199},"  \u002F\u002F Passes 'double' to the base class's T\n",[18,5165,5166],{},[22,5167,183],{},[118,5169,5171],{"className":120,"code":5170,"language":122,"meta":123,"style":123},"template\u003Cclass T>\nclass Base\n{\n    T m;\n};\n\n\u002F\u002Fclass Son:public Base  \u002F\u002F错误，c++编译需要给子类分配内存，必须知道父类中T的类型才可以向下继承\nclass Son :public Base\u003Cint> \u002F\u002F必须指定一个类型\n{\n};\nvoid test01()\n{\n    Son c;\n}\n\n\u002F\u002F类模板继承类模板 ,可以用T2指定父类中的T类型\ntemplate\u003Cclass T1, class T2>\nclass Son2 :public Base\u003CT2>\n{\npublic:\n    Son2()\n    {\n        cout \u003C\u003C typeid(T1).name() \u003C\u003C endl;\n        cout \u003C\u003C typeid(T2).name() \u003C\u003C endl;\n    }\n};\n\nvoid test02()\n{\n    Son2\u003Cint, char> child1;\n}\n\nint main() {\n\n    test01();\n\n    test02();\n\n\n    return 0;\n}\n",[125,5172,5173,5185,5192,5196,5201,5205,5209,5217,5241,5245,5249,5257,5261,5266,5270,5274,5279,5297,5316,5320,5324,5331,5335,5353,5371,5375,5379,5383,5391,5395,5410,5414,5418,5426,5430,5436,5440,5446,5450,5454,5462],{"__ignoreMap":123},[128,5174,5175,5177,5179,5181,5183],{"class":130,"line":131},[128,5176,5],{"class":134},[128,5178,138],{"class":137},[128,5180,726],{"class":134},[128,5182,145],{"class":144},[128,5184,148],{"class":137},[128,5186,5187,5189],{"class":130,"line":151},[128,5188,726],{"class":134},[128,5190,5191],{"class":144}," Base\n",[128,5193,5194],{"class":130,"line":203},[128,5195,401],{"class":137},[128,5197,5198],{"class":130,"line":233},[128,5199,5200],{"class":137},"    T m;\n",[128,5202,5203],{"class":130,"line":248},[128,5204,2748],{"class":137},[128,5206,5207],{"class":130,"line":259},[128,5208,194],{"emptyLinePlaceholder":193},[128,5210,5211,5214],{"class":130,"line":270},[128,5212,5213],{"class":199},"\u002F\u002Fclass Son:public Base",[128,5215,5216],{"class":199},"  \u002F\u002F错误，c++编译需要给子类分配内存，必须知道父类中T的类型才可以向下继承\n",[128,5218,5219,5221,5224,5227,5229,5232,5234,5236,5238],{"class":130,"line":276},[128,5220,726],{"class":134},[128,5222,5223],{"class":144}," Son",[128,5225,5226],{"class":137}," :",[128,5228,5076],{"class":134},[128,5230,5231],{"class":144}," Base",[128,5233,138],{"class":137},[128,5235,546],{"class":134},[128,5237,1160],{"class":137},[128,5239,5240],{"class":199}," \u002F\u002F必须指定一个类型\n",[128,5242,5243],{"class":130,"line":281},[128,5244,401],{"class":137},[128,5246,5247],{"class":130,"line":287},[128,5248,2748],{"class":137},[128,5250,5251,5253,5255],{"class":130,"line":310},[128,5252,206],{"class":134},[128,5254,447],{"class":144},[128,5256,450],{"class":137},[128,5258,5259],{"class":130,"line":322},[128,5260,401],{"class":137},[128,5262,5263],{"class":130,"line":331},[128,5264,5265],{"class":137},"    Son c;\n",[128,5267,5268],{"class":130,"line":340},[128,5269,273],{"class":137},[128,5271,5272],{"class":130,"line":345},[128,5273,194],{"emptyLinePlaceholder":193},[128,5275,5276],{"class":130,"line":350},[128,5277,5278],{"class":199},"\u002F\u002F类模板继承类模板 ,可以用T2指定父类中的T类型\n",[128,5280,5281,5283,5285,5287,5289,5291,5293,5295],{"class":130,"line":356},[128,5282,5],{"class":134},[128,5284,138],{"class":137},[128,5286,726],{"class":134},[128,5288,4674],{"class":144},[128,5290,222],{"class":137},[128,5292,726],{"class":134},[128,5294,4681],{"class":144},[128,5296,148],{"class":137},[128,5298,5299,5301,5304,5306,5308,5310,5312,5314],{"class":130,"line":369},[128,5300,726],{"class":134},[128,5302,5303],{"class":144}," Son2",[128,5305,5226],{"class":137},[128,5307,5076],{"class":134},[128,5309,5231],{"class":144},[128,5311,138],{"class":137},[128,5313,4704],{"class":144},[128,5315,148],{"class":137},[128,5317,5318],{"class":130,"line":398},[128,5319,401],{"class":137},[128,5321,5322],{"class":130,"line":404},[128,5323,2676],{"class":134},[128,5325,5326,5329],{"class":130,"line":414},[128,5327,5328],{"class":144},"    Son2",[128,5330,450],{"class":137},[128,5332,5333],{"class":130,"line":423},[128,5334,1231],{"class":137},[128,5336,5337,5339,5341,5343,5345,5347,5349,5351],{"class":130,"line":432},[128,5338,1432],{"class":137},[128,5340,563],{"class":134},[128,5342,4738],{"class":134},[128,5344,4741],{"class":137},[128,5346,4744],{"class":144},[128,5348,4747],{"class":137},[128,5350,563],{"class":134},[128,5352,577],{"class":137},[128,5354,5355,5357,5359,5361,5363,5365,5367,5369],{"class":130,"line":437},[128,5356,1432],{"class":137},[128,5358,563],{"class":134},[128,5360,4738],{"class":134},[128,5362,4767],{"class":137},[128,5364,4744],{"class":144},[128,5366,4747],{"class":137},[128,5368,563],{"class":134},[128,5370,577],{"class":137},[128,5372,5373],{"class":130,"line":442},[128,5374,1362],{"class":137},[128,5376,5377],{"class":130,"line":453},[128,5378,2748],{"class":137},[128,5380,5381],{"class":130,"line":458},[128,5382,194],{"emptyLinePlaceholder":193},[128,5384,5385,5387,5389],{"class":130,"line":475},[128,5386,206],{"class":134},[128,5388,934],{"class":144},[128,5390,450],{"class":137},[128,5392,5393],{"class":130,"line":490},[128,5394,401],{"class":137},[128,5396,5397,5399,5402,5404,5407],{"class":130,"line":496},[128,5398,5328],{"class":137},[128,5400,5401],{"class":134},"\u003Cint",[128,5403,222],{"class":137},[128,5405,5406],{"class":134},"char>",[128,5408,5409],{"class":137}," child1;\n",[128,5411,5412],{"class":130,"line":502},[128,5413,273],{"class":137},[128,5415,5416],{"class":130,"line":507},[128,5417,194],{"emptyLinePlaceholder":193},[128,5419,5420,5422,5424],{"class":130,"line":513},[128,5421,546],{"class":134},[128,5423,618],{"class":144},[128,5425,621],{"class":137},[128,5427,5428],{"class":130,"line":519},[128,5429,194],{"emptyLinePlaceholder":193},[128,5431,5432,5434],{"class":130,"line":528},[128,5433,632],{"class":144},[128,5435,635],{"class":137},[128,5437,5438],{"class":130,"line":533},[128,5439,194],{"emptyLinePlaceholder":193},[128,5441,5442,5444],{"class":130,"line":539},[128,5443,994],{"class":144},[128,5445,635],{"class":137},[128,5447,5448],{"class":130,"line":552},[128,5449,194],{"emptyLinePlaceholder":193},[128,5451,5452],{"class":130,"line":557},[128,5453,194],{"emptyLinePlaceholder":193},[128,5455,5456,5458,5460],{"class":130,"line":580},[128,5457,651],{"class":134},[128,5459,654],{"class":468},[128,5461,472],{"class":137},[128,5463,5464],{"class":130,"line":598},[128,5465,273],{"class":137},[18,5467,5468],{},[22,5469,1723],{},[118,5471,5474],{"className":5472,"code":5473,"language":671,"meta":123},[669],"i\nc\n",[125,5475,5473],{"__ignoreMap":123},[18,5477,5478],{},"Summary: If the parent class is a class template, the derived class must specify the data type for the template parameter T in the parent class.",[98,5480,5482],{"id":5481},"out-of-class-implementation-of-template-member-functions","Out-of-Class Implementation of Template Member Functions",[18,5484,5485],{},"Learning Objective: Master the out-of-class implementation of member functions in class templates.",[18,5487,5488],{},[22,5489,183],{},[118,5491,5493],{"className":120,"code":5492,"language":122,"meta":123,"style":123},"#include \u003Cstring>\n\n\u002F\u002F类模板中成员函数类外实现\ntemplate\u003Cclass T1, class T2>\nclass Person {\npublic:\n    \u002F\u002F成员函数类内声明\n    Person(T1 name, T2 age);\n    void showPerson();\n\npublic:\n    T1 m_Name;\n    T2 m_Age;\n};\n\n\u002F\u002F构造函数 类外实现\ntemplate\u003Cclass T1, class T2>\nPerson\u003CT1, T2>::Person(T1 name, T2 age) {\n    this->m_Name = name;\n    this->m_Age = age;\n}\n\n\u002F\u002F成员函数 类外实现\ntemplate\u003Cclass T1, class T2>\nvoid Person\u003CT1, T2>::showPerson() {\n    cout \u003C\u003C \"姓名: \" \u003C\u003C this->m_Name \u003C\u003C \" 年龄:\" \u003C\u003C this->m_Age \u003C\u003C endl;\n}\n\nvoid test01()\n{\n    Person\u003Cstring, int> p(\"Tom\", 20);\n    p.showPerson();\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[125,5494,5495,5501,5505,5510,5528,5538,5542,5547,5565,5573,5577,5581,5586,5591,5595,5599,5604,5622,5642,5653,5663,5667,5671,5676,5694,5714,5744,5748,5752,5760,5764,5787,5795,5799,5803,5811,5815,5821,5825,5829,5837],{"__ignoreMap":123},[128,5496,5497,5499],{"class":130,"line":131},[128,5498,2629],{"class":134},[128,5500,2656],{"class":566},[128,5502,5503],{"class":130,"line":151},[128,5504,194],{"emptyLinePlaceholder":193},[128,5506,5507],{"class":130,"line":203},[128,5508,5509],{"class":199},"\u002F\u002F类模板中成员函数类外实现\n",[128,5511,5512,5514,5516,5518,5520,5522,5524,5526],{"class":130,"line":233},[128,5513,5],{"class":134},[128,5515,138],{"class":137},[128,5517,726],{"class":134},[128,5519,4674],{"class":144},[128,5521,222],{"class":137},[128,5523,726],{"class":134},[128,5525,4681],{"class":144},[128,5527,148],{"class":137},[128,5529,5530,5532,5535],{"class":130,"line":248},[128,5531,726],{"class":134},[128,5533,5534],{"class":144}," Person",[128,5536,5537],{"class":137}," {\n",[128,5539,5540],{"class":130,"line":259},[128,5541,2676],{"class":134},[128,5543,5544],{"class":130,"line":270},[128,5545,5546],{"class":199},"    \u002F\u002F成员函数类内声明\n",[128,5548,5549,5551,5553,5555,5557,5559,5561,5563],{"class":130,"line":276},[128,5550,2681],{"class":144},[128,5552,212],{"class":137},[128,5554,4699],{"class":144},[128,5556,2689],{"class":218},[128,5558,222],{"class":137},[128,5560,4704],{"class":144},[128,5562,2696],{"class":218},[128,5564,1519],{"class":137},[128,5566,5567,5569,5571],{"class":130,"line":281},[128,5568,2499],{"class":134},[128,5570,3485],{"class":144},[128,5572,635],{"class":137},[128,5574,5575],{"class":130,"line":287},[128,5576,194],{"emptyLinePlaceholder":193},[128,5578,5579],{"class":130,"line":310},[128,5580,2676],{"class":134},[128,5582,5583],{"class":130,"line":322},[128,5584,5585],{"class":137},"    T1 m_Name;\n",[128,5587,5588],{"class":130,"line":331},[128,5589,5590],{"class":137},"    T2 m_Age;\n",[128,5592,5593],{"class":130,"line":340},[128,5594,2748],{"class":137},[128,5596,5597],{"class":130,"line":345},[128,5598,194],{"emptyLinePlaceholder":193},[128,5600,5601],{"class":130,"line":350},[128,5602,5603],{"class":199},"\u002F\u002F构造函数 类外实现\n",[128,5605,5606,5608,5610,5612,5614,5616,5618,5620],{"class":130,"line":356},[128,5607,5],{"class":134},[128,5609,138],{"class":137},[128,5611,726],{"class":134},[128,5613,4674],{"class":144},[128,5615,222],{"class":137},[128,5617,726],{"class":134},[128,5619,4681],{"class":144},[128,5621,148],{"class":137},[128,5623,5624,5626,5628,5630,5632,5634,5637,5639],{"class":130,"line":369},[128,5625,2887],{"class":144},[128,5627,138],{"class":137},[128,5629,4699],{"class":144},[128,5631,222],{"class":137},[128,5633,4704],{"class":144},[128,5635,5636],{"class":137},">::",[128,5638,2887],{"class":144},[128,5640,5641],{"class":137},"(T1 name, T2 age) {\n",[128,5643,5644,5647,5649,5651],{"class":130,"line":398},[128,5645,5646],{"class":468},"    this",[128,5648,2710],{"class":137},[128,5650,242],{"class":134},[128,5652,2715],{"class":137},[128,5654,5655,5657,5659,5661],{"class":130,"line":404},[128,5656,5646],{"class":468},[128,5658,2722],{"class":137},[128,5660,242],{"class":134},[128,5662,2727],{"class":137},[128,5664,5665],{"class":130,"line":414},[128,5666,273],{"class":137},[128,5668,5669],{"class":130,"line":423},[128,5670,194],{"emptyLinePlaceholder":193},[128,5672,5673],{"class":130,"line":432},[128,5674,5675],{"class":199},"\u002F\u002F成员函数 类外实现\n",[128,5677,5678,5680,5682,5684,5686,5688,5690,5692],{"class":130,"line":437},[128,5679,5],{"class":134},[128,5681,138],{"class":137},[128,5683,726],{"class":134},[128,5685,4674],{"class":144},[128,5687,222],{"class":137},[128,5689,726],{"class":134},[128,5691,4681],{"class":144},[128,5693,148],{"class":137},[128,5695,5696,5698,5700,5702,5704,5706,5708,5710,5712],{"class":130,"line":442},[128,5697,206],{"class":134},[128,5699,5534],{"class":144},[128,5701,138],{"class":137},[128,5703,4699],{"class":144},[128,5705,222],{"class":137},[128,5707,4704],{"class":144},[128,5709,5636],{"class":137},[128,5711,3600],{"class":144},[128,5713,621],{"class":137},[128,5715,5716,5718,5720,5723,5725,5727,5729,5731,5734,5736,5738,5740,5742],{"class":130,"line":453},[128,5717,560],{"class":137},[128,5719,563],{"class":134},[128,5721,5722],{"class":566}," \"姓名: \"",[128,5724,570],{"class":134},[128,5726,3505],{"class":468},[128,5728,2710],{"class":137},[128,5730,563],{"class":134},[128,5732,5733],{"class":566}," \" 年龄:\"",[128,5735,570],{"class":134},[128,5737,3505],{"class":468},[128,5739,2722],{"class":137},[128,5741,563],{"class":134},[128,5743,577],{"class":137},[128,5745,5746],{"class":130,"line":458},[128,5747,273],{"class":137},[128,5749,5750],{"class":130,"line":475},[128,5751,194],{"emptyLinePlaceholder":193},[128,5753,5754,5756,5758],{"class":130,"line":490},[128,5755,206],{"class":134},[128,5757,447],{"class":144},[128,5759,450],{"class":137},[128,5761,5762],{"class":130,"line":496},[128,5763,401],{"class":137},[128,5765,5766,5768,5770,5772,5774,5776,5778,5780,5782,5785],{"class":130,"line":502},[128,5767,2681],{"class":137},[128,5769,138],{"class":134},[128,5771,3574],{"class":137},[128,5773,3577],{"class":134},[128,5775,3941],{"class":144},[128,5777,212],{"class":137},[128,5779,3115],{"class":566},[128,5781,222],{"class":137},[128,5783,5784],{"class":468},"20",[128,5786,1519],{"class":137},[128,5788,5789,5791,5793],{"class":130,"line":507},[128,5790,3899],{"class":137},[128,5792,3600],{"class":144},[128,5794,635],{"class":137},[128,5796,5797],{"class":130,"line":513},[128,5798,273],{"class":137},[128,5800,5801],{"class":130,"line":519},[128,5802,194],{"emptyLinePlaceholder":193},[128,5804,5805,5807,5809],{"class":130,"line":528},[128,5806,546],{"class":134},[128,5808,618],{"class":144},[128,5810,621],{"class":137},[128,5812,5813],{"class":130,"line":533},[128,5814,194],{"emptyLinePlaceholder":193},[128,5816,5817,5819],{"class":130,"line":539},[128,5818,632],{"class":144},[128,5820,635],{"class":137},[128,5822,5823],{"class":130,"line":552},[128,5824,194],{"emptyLinePlaceholder":193},[128,5826,5827],{"class":130,"line":557},[128,5828,194],{"emptyLinePlaceholder":193},[128,5830,5831,5833,5835],{"class":130,"line":580},[128,5832,651],{"class":134},[128,5834,654],{"class":468},[128,5836,472],{"class":137},[128,5838,5839],{"class":130,"line":598},[128,5840,273],{"class":137},[18,5842,5843],{},[22,5844,159],{},[118,5846,5849],{"className":5847,"code":5848,"language":671,"meta":123},[669],"姓名: Tom 年龄:20\n",[125,5850,5848],{"__ignoreMap":123},[18,5852,5853],{},"Summary: When implementing member functions of a class template outside the class, a template parameter list must be added.",[98,5855,5857],{"id":5856},"class-templates-are-typically-defined-in-header-files-due-to-their-nature-since-template-definitions-must-be-available-at-the-point-of-instantiation-common-practices-include","Class templates are typically defined in header files due to their nature. Since template definitions must be available at the point of instantiation, common practices include:",[62,5859,5860,5877],{},[65,5861,5862,5865,5866,5869,5870,5873,5874,5876],{},[22,5863,5864],{},"Inclusion model",": Placing both template declaration and definition in the same header file (e.g., ",[125,5867,5868],{},"mytemplate.h"," or ",[125,5871,5872],{},"mytemplate.tpp"," included by ",[125,5875,5868],{},")",[65,5878,5879,5882,5883,5876],{},[22,5880,5881],{},"Explicit instantiation",": Defining the template in a source file and explicitly instantiating specific versions there (e.g., ",[125,5884,5885],{},"template class MyClass\u003Cint>;",[18,5887,5888],{},"These approaches ensure the compiler can generate the required code during compilation while maintaining separation of interface and implementation.",[18,5890,4372],{},[62,5892,5893],{},[65,5894,5895],{},"Mastering the issues and solutions related to separating class template member function implementations across files",[18,5897,5898],{},"Question",[62,5900,5901],{},[65,5902,5903],{},"The member functions of a class template are instantiated only when called, which can cause linking errors when the code is split across multiple files.",[18,5905,5906],{},"Solution:",[62,5908,5909,5912],{},[65,5910,5911],{},"Solution 1: Directly include .cpp source files",[65,5913,5914],{},"Solution 2: Write both declarations and implementations in the same file, and change the file extension to .hpp. The .hpp extension is a conventional name, not a requirement.",[18,5916,5917],{},[22,5918,183],{},[18,5920,5921,5922,5925],{},"In the ",[125,5923,5924],{},"person.hpp"," file, the code is as follows:",[118,5927,5929],{"className":120,"code":5928,"language":122,"meta":123,"style":123},"\u002F\u002F person.hpp\n\n#ifndef PERSON_HPP\n#define PERSON_HPP\n\n#include \u003Cstring>\n\nclass Person {\npublic:\n    \u002F\u002F Constructor\n    Person(const std::string& name, int age);\n\n    \u002F\u002F Destructor\n    ~Person();\n\n    \u002F\u002F Member functions\n    void greet() const;\n    void setName(const std::string& name);\n    void setAge(int age);\n    std::string getName() const;\n    int getAge() const;\n\nprivate:\n    std::string name_;\n    int age_;\n};\n\n#endif \u002F\u002F PERSON_HPP\n",[125,5930,5931,5936,5940,5948,5955,5959,5965,5969,5977,5981,5986,6014,6018,6023,6030,6034,6039,6052,6075,6090,6108,6121,6125,6130,6137,6144,6148,6152],{"__ignoreMap":123},[128,5932,5933],{"class":130,"line":131},[128,5934,5935],{"class":199},"\u002F\u002F person.hpp\n",[128,5937,5938],{"class":130,"line":151},[128,5939,194],{"emptyLinePlaceholder":193},[128,5941,5942,5945],{"class":130,"line":203},[128,5943,5944],{"class":134},"#ifndef",[128,5946,5947],{"class":144}," PERSON_HPP\n",[128,5949,5950,5953],{"class":130,"line":233},[128,5951,5952],{"class":134},"#define",[128,5954,5947],{"class":144},[128,5956,5957],{"class":130,"line":248},[128,5958,194],{"emptyLinePlaceholder":193},[128,5960,5961,5963],{"class":130,"line":259},[128,5962,2629],{"class":134},[128,5964,2656],{"class":566},[128,5966,5967],{"class":130,"line":270},[128,5968,194],{"emptyLinePlaceholder":193},[128,5970,5971,5973,5975],{"class":130,"line":276},[128,5972,726],{"class":134},[128,5974,5534],{"class":144},[128,5976,5537],{"class":137},[128,5978,5979],{"class":130,"line":281},[128,5980,2676],{"class":134},[128,5982,5983],{"class":130,"line":287},[128,5984,5985],{"class":199},"    \u002F\u002F Constructor\n",[128,5987,5988,5990,5992,5995,5997,6000,6002,6004,6006,6008,6010,6012],{"class":130,"line":310},[128,5989,2681],{"class":144},[128,5991,212],{"class":137},[128,5993,5994],{"class":134},"const",[128,5996,2643],{"class":144},[128,5998,5999],{"class":137},"::",[128,6001,2686],{"class":144},[128,6003,382],{"class":134},[128,6005,2689],{"class":218},[128,6007,222],{"class":137},[128,6009,546],{"class":134},[128,6011,2696],{"class":218},[128,6013,1519],{"class":137},[128,6015,6016],{"class":130,"line":322},[128,6017,194],{"emptyLinePlaceholder":193},[128,6019,6020],{"class":130,"line":331},[128,6021,6022],{"class":199},"    \u002F\u002F Destructor\n",[128,6024,6025,6028],{"class":130,"line":340},[128,6026,6027],{"class":144},"    ~Person",[128,6029,635],{"class":137},[128,6031,6032],{"class":130,"line":345},[128,6033,194],{"emptyLinePlaceholder":193},[128,6035,6036],{"class":130,"line":350},[128,6037,6038],{"class":199},"    \u002F\u002F Member functions\n",[128,6040,6041,6043,6046,6048,6050],{"class":130,"line":356},[128,6042,2499],{"class":134},[128,6044,6045],{"class":144}," greet",[128,6047,4747],{"class":137},[128,6049,5994],{"class":134},[128,6051,472],{"class":137},[128,6053,6054,6056,6059,6061,6063,6065,6067,6069,6071,6073],{"class":130,"line":369},[128,6055,2499],{"class":134},[128,6057,6058],{"class":144}," setName",[128,6060,212],{"class":137},[128,6062,5994],{"class":134},[128,6064,2643],{"class":144},[128,6066,5999],{"class":137},[128,6068,2686],{"class":144},[128,6070,382],{"class":134},[128,6072,2689],{"class":218},[128,6074,1519],{"class":137},[128,6076,6077,6079,6082,6084,6086,6088],{"class":130,"line":398},[128,6078,2499],{"class":134},[128,6080,6081],{"class":144}," setAge",[128,6083,212],{"class":137},[128,6085,546],{"class":134},[128,6087,2696],{"class":218},[128,6089,1519],{"class":137},[128,6091,6092,6095,6097,6099,6102,6104,6106],{"class":130,"line":404},[128,6093,6094],{"class":144},"    std",[128,6096,5999],{"class":137},[128,6098,2686],{"class":144},[128,6100,6101],{"class":144}," getName",[128,6103,4747],{"class":137},[128,6105,5994],{"class":134},[128,6107,472],{"class":137},[128,6109,6110,6112,6115,6117,6119],{"class":130,"line":414},[128,6111,236],{"class":134},[128,6113,6114],{"class":144}," getAge",[128,6116,4747],{"class":137},[128,6118,5994],{"class":134},[128,6120,472],{"class":137},[128,6122,6123],{"class":130,"line":423},[128,6124,194],{"emptyLinePlaceholder":193},[128,6126,6127],{"class":130,"line":432},[128,6128,6129],{"class":134},"private:\n",[128,6131,6132,6134],{"class":130,"line":437},[128,6133,6094],{"class":144},[128,6135,6136],{"class":137},"::string name_;\n",[128,6138,6139,6141],{"class":130,"line":442},[128,6140,236],{"class":134},[128,6142,6143],{"class":137}," age_;\n",[128,6145,6146],{"class":130,"line":453},[128,6147,2748],{"class":137},[128,6149,6150],{"class":130,"line":458},[128,6151,194],{"emptyLinePlaceholder":193},[128,6153,6154,6157],{"class":130,"line":475},[128,6155,6156],{"class":134},"#endif",[128,6158,6159],{"class":199}," \u002F\u002F PERSON_HPP\n",[118,6161,6163],{"className":120,"code":6162,"language":122,"meta":123,"style":123},"#pragma once\n#include \u003Ciostream>\nusing namespace std;\n#include \u003Cstring>\n\ntemplate\u003Cclass T1, class T2>\nclass Person {\npublic:\n    Person(T1 name, T2 age);\n    void showPerson();\npublic:\n    T1 m_Name;\n    T2 m_Age;\n};\n\n\u002F\u002F构造函数 类外实现\ntemplate\u003Cclass T1, class T2>\nPerson\u003CT1, T2>::Person(T1 name, T2 age) {\n    this->m_Name = name;\n    this->m_Age = age;\n}\n\n\u002F\u002F成员函数 类外实现\ntemplate\u003Cclass T1, class T2>\nvoid Person\u003CT1, T2>::showPerson() {\n    cout \u003C\u003C \"姓名: \" \u003C\u003C this->m_Name \u003C\u003C \" 年龄:\" \u003C\u003C this->m_Age \u003C\u003C endl;\n}\n",[125,6164,6165,6173,6180,6190,6196,6200,6218,6226,6230,6248,6256,6260,6264,6268,6272,6276,6280,6298,6316,6326,6336,6340,6344,6348,6366,6386,6414],{"__ignoreMap":123},[128,6166,6167,6170],{"class":130,"line":131},[128,6168,6169],{"class":134},"#pragma",[128,6171,6172],{"class":144}," once\n",[128,6174,6175,6177],{"class":130,"line":151},[128,6176,2629],{"class":134},[128,6178,6179],{"class":566}," \u003Ciostream>\n",[128,6181,6182,6184,6186,6188],{"class":130,"line":203},[128,6183,2637],{"class":134},[128,6185,2640],{"class":134},[128,6187,2643],{"class":144},[128,6189,472],{"class":137},[128,6191,6192,6194],{"class":130,"line":233},[128,6193,2629],{"class":134},[128,6195,2656],{"class":566},[128,6197,6198],{"class":130,"line":248},[128,6199,194],{"emptyLinePlaceholder":193},[128,6201,6202,6204,6206,6208,6210,6212,6214,6216],{"class":130,"line":259},[128,6203,5],{"class":134},[128,6205,138],{"class":137},[128,6207,726],{"class":134},[128,6209,4674],{"class":144},[128,6211,222],{"class":137},[128,6213,726],{"class":134},[128,6215,4681],{"class":144},[128,6217,148],{"class":137},[128,6219,6220,6222,6224],{"class":130,"line":270},[128,6221,726],{"class":134},[128,6223,5534],{"class":144},[128,6225,5537],{"class":137},[128,6227,6228],{"class":130,"line":276},[128,6229,2676],{"class":134},[128,6231,6232,6234,6236,6238,6240,6242,6244,6246],{"class":130,"line":281},[128,6233,2681],{"class":144},[128,6235,212],{"class":137},[128,6237,4699],{"class":144},[128,6239,2689],{"class":218},[128,6241,222],{"class":137},[128,6243,4704],{"class":144},[128,6245,2696],{"class":218},[128,6247,1519],{"class":137},[128,6249,6250,6252,6254],{"class":130,"line":287},[128,6251,2499],{"class":134},[128,6253,3485],{"class":144},[128,6255,635],{"class":137},[128,6257,6258],{"class":130,"line":310},[128,6259,2676],{"class":134},[128,6261,6262],{"class":130,"line":322},[128,6263,5585],{"class":137},[128,6265,6266],{"class":130,"line":331},[128,6267,5590],{"class":137},[128,6269,6270],{"class":130,"line":340},[128,6271,2748],{"class":137},[128,6273,6274],{"class":130,"line":345},[128,6275,194],{"emptyLinePlaceholder":193},[128,6277,6278],{"class":130,"line":350},[128,6279,5603],{"class":199},[128,6281,6282,6284,6286,6288,6290,6292,6294,6296],{"class":130,"line":356},[128,6283,5],{"class":134},[128,6285,138],{"class":137},[128,6287,726],{"class":134},[128,6289,4674],{"class":144},[128,6291,222],{"class":137},[128,6293,726],{"class":134},[128,6295,4681],{"class":144},[128,6297,148],{"class":137},[128,6299,6300,6302,6304,6306,6308,6310,6312,6314],{"class":130,"line":369},[128,6301,2887],{"class":144},[128,6303,138],{"class":137},[128,6305,4699],{"class":144},[128,6307,222],{"class":137},[128,6309,4704],{"class":144},[128,6311,5636],{"class":137},[128,6313,2887],{"class":144},[128,6315,5641],{"class":137},[128,6317,6318,6320,6322,6324],{"class":130,"line":398},[128,6319,5646],{"class":468},[128,6321,2710],{"class":137},[128,6323,242],{"class":134},[128,6325,2715],{"class":137},[128,6327,6328,6330,6332,6334],{"class":130,"line":404},[128,6329,5646],{"class":468},[128,6331,2722],{"class":137},[128,6333,242],{"class":134},[128,6335,2727],{"class":137},[128,6337,6338],{"class":130,"line":414},[128,6339,273],{"class":137},[128,6341,6342],{"class":130,"line":423},[128,6343,194],{"emptyLinePlaceholder":193},[128,6345,6346],{"class":130,"line":432},[128,6347,5675],{"class":199},[128,6349,6350,6352,6354,6356,6358,6360,6362,6364],{"class":130,"line":437},[128,6351,5],{"class":134},[128,6353,138],{"class":137},[128,6355,726],{"class":134},[128,6357,4674],{"class":144},[128,6359,222],{"class":137},[128,6361,726],{"class":134},[128,6363,4681],{"class":144},[128,6365,148],{"class":137},[128,6367,6368,6370,6372,6374,6376,6378,6380,6382,6384],{"class":130,"line":442},[128,6369,206],{"class":134},[128,6371,5534],{"class":144},[128,6373,138],{"class":137},[128,6375,4699],{"class":144},[128,6377,222],{"class":137},[128,6379,4704],{"class":144},[128,6381,5636],{"class":137},[128,6383,3600],{"class":144},[128,6385,621],{"class":137},[128,6387,6388,6390,6392,6394,6396,6398,6400,6402,6404,6406,6408,6410,6412],{"class":130,"line":453},[128,6389,560],{"class":137},[128,6391,563],{"class":134},[128,6393,5722],{"class":566},[128,6395,570],{"class":134},[128,6397,3505],{"class":468},[128,6399,2710],{"class":137},[128,6401,563],{"class":134},[128,6403,5733],{"class":566},[128,6405,570],{"class":134},[128,6407,3505],{"class":468},[128,6409,2722],{"class":137},[128,6411,563],{"class":134},[128,6413,577],{"class":137},[128,6415,6416],{"class":130,"line":458},[128,6417,273],{"class":137},[18,6419,6420,160,6422,164],{},[22,6421,159],{},[125,6423,163],{},[18,6425,6426],{},"Class template code in the .cpp file",[118,6428,6430],{"className":120,"code":6429,"language":122,"meta":123,"style":123},"#include\u003Ciostream>\nusing namespace std;\n\n\u002F\u002F#include \"person.h\"\n#include \"person.cpp\" \u002F\u002F解决方式1，包含cpp源文件\n\n\u002F\u002F解决方式2，将声明和实现写到一起，文件后缀名改为.hpp\n#include \"person.hpp\"\nvoid test01()\n{\n    Person\u003Cstring, int> p(\"Tom\", 10);\n    p.showPerson();\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[125,6431,6432,6438,6448,6452,6457,6467,6471,6476,6483,6491,6495,6517,6525,6529,6533,6541,6545,6551,6555,6559,6567],{"__ignoreMap":123},[128,6433,6434,6436],{"class":130,"line":131},[128,6435,2629],{"class":134},[128,6437,2632],{"class":566},[128,6439,6440,6442,6444,6446],{"class":130,"line":151},[128,6441,2637],{"class":134},[128,6443,2640],{"class":134},[128,6445,2643],{"class":144},[128,6447,472],{"class":137},[128,6449,6450],{"class":130,"line":203},[128,6451,194],{"emptyLinePlaceholder":193},[128,6453,6454],{"class":130,"line":233},[128,6455,6456],{"class":199},"\u002F\u002F#include \"person.h\"\n",[128,6458,6459,6461,6464],{"class":130,"line":248},[128,6460,2629],{"class":134},[128,6462,6463],{"class":566}," \"person.cpp\"",[128,6465,6466],{"class":199}," \u002F\u002F解决方式1，包含cpp源文件\n",[128,6468,6469],{"class":130,"line":259},[128,6470,194],{"emptyLinePlaceholder":193},[128,6472,6473],{"class":130,"line":270},[128,6474,6475],{"class":199},"\u002F\u002F解决方式2，将声明和实现写到一起，文件后缀名改为.hpp\n",[128,6477,6478,6480],{"class":130,"line":276},[128,6479,2629],{"class":134},[128,6481,6482],{"class":566}," \"person.hpp\"\n",[128,6484,6485,6487,6489],{"class":130,"line":281},[128,6486,206],{"class":134},[128,6488,447],{"class":144},[128,6490,450],{"class":137},[128,6492,6493],{"class":130,"line":287},[128,6494,401],{"class":137},[128,6496,6497,6499,6501,6503,6505,6507,6509,6511,6513,6515],{"class":130,"line":310},[128,6498,2681],{"class":137},[128,6500,138],{"class":134},[128,6502,3574],{"class":137},[128,6504,3577],{"class":134},[128,6506,3941],{"class":144},[128,6508,212],{"class":137},[128,6510,3115],{"class":566},[128,6512,222],{"class":137},[128,6514,3120],{"class":468},[128,6516,1519],{"class":137},[128,6518,6519,6521,6523],{"class":130,"line":322},[128,6520,3899],{"class":137},[128,6522,3600],{"class":144},[128,6524,635],{"class":137},[128,6526,6527],{"class":130,"line":331},[128,6528,273],{"class":137},[128,6530,6531],{"class":130,"line":340},[128,6532,194],{"emptyLinePlaceholder":193},[128,6534,6535,6537,6539],{"class":130,"line":345},[128,6536,546],{"class":134},[128,6538,618],{"class":144},[128,6540,621],{"class":137},[128,6542,6543],{"class":130,"line":350},[128,6544,194],{"emptyLinePlaceholder":193},[128,6546,6547,6549],{"class":130,"line":356},[128,6548,632],{"class":144},[128,6550,635],{"class":137},[128,6552,6553],{"class":130,"line":369},[128,6554,194],{"emptyLinePlaceholder":193},[128,6556,6557],{"class":130,"line":398},[128,6558,194],{"emptyLinePlaceholder":193},[128,6560,6561,6563,6565],{"class":130,"line":404},[128,6562,651],{"class":134},[128,6564,654],{"class":468},[128,6566,472],{"class":137},[128,6568,6569],{"class":130,"line":414},[128,6570,273],{"class":137},[18,6572,6573,6575,6576,6579],{},[22,6574,159],{}," 该代码块依赖同一示例中的 ",[125,6577,6578],{},"person.cpp","，不能单独编译；与前面的类模板实现文件一起构建后，本段自身没有终端输出。",[18,6581,6582],{},"Summary: The mainstream solution is the second approach, which consolidates the class template member functions into a single file and renames the file extension to .hpp.",[98,6584,6586],{"id":6585},"class-templates-and-friend-functions","Class Templates and Friend Functions",[18,6588,4372],{},[62,6590,6591],{},[65,6592,6593],{},"Master the implementation of class templates with friend functions, both inside and outside the class.",[18,6595,6596],{},"Implementation of global function within class - just declare as friend directly inside the class",[18,6598,6599],{},"Implementing global functions outside a class – requires informing the compiler about their existence beforehand via forward declaration.",[18,6601,6602],{},[22,6603,183],{},[118,6605,6607],{"className":120,"code":6606,"language":122,"meta":123,"style":123},"#include \u003Cstring>\n\n\u002F\u002F2、全局函数配合友元  类外实现 - 先做函数模板声明，下方在做函数模板定义，在做友元\ntemplate\u003Cclass T1, class T2> class Person;\n\n\u002F\u002F如果声明了函数模板，可以将实现写到后面，否则需要将实现体写到类的前面让编译器提前看到\n\u002F\u002Ftemplate\u003Cclass T1, class T2> void printPerson2(Person\u003CT1, T2> & p); \n\ntemplate\u003Cclass T1, class T2>\nvoid printPerson2(Person\u003CT1, T2> & p)\n{\n    cout \u003C\u003C \"类外实现 ---- 姓名： \" \u003C\u003C p.m_Name \u003C\u003C \" 年龄：\" \u003C\u003C p.m_Age \u003C\u003C endl;\n}\n\ntemplate\u003Cclass T1, class T2>\nclass Person\n{\n    \u002F\u002F1、全局函数配合友元   类内实现\n    friend void printPerson(Person\u003CT1, T2> & p)\n    {\n        cout \u003C\u003C \"姓名： \" \u003C\u003C p.m_Name \u003C\u003C \" 年龄：\" \u003C\u003C p.m_Age \u003C\u003C endl;\n    }\n\n    \u002F\u002F全局函数配合友元  类外实现\n    friend void printPerson2\u003C>(Person\u003CT1, T2> & p);\n\npublic:\n\n    Person(T1 name, T2 age)\n    {\n        this->m_Name = name;\n        this->m_Age = age;\n    }\n\nprivate:\n    T1 m_Name;\n    T2 m_Age;\n\n};\n\n\u002F\u002F1、全局函数在类内实现\nvoid test01()\n{\n    Person \u003Cstring, int >p(\"Tom\", 20);\n    printPerson(p);\n}\n\n\u002F\u002F2、全局函数在类外实现\nvoid test02()\n{\n    Person \u003Cstring, int >p(\"Jerry\", 30);\n    printPerson2(p);\n}\n\nint main() {\n\n    \u002F\u002Ftest01();\n\n    test02();\n\n\n    return 0;\n}\n",[125,6608,6609,6615,6619,6624,6648,6652,6657,6662,6666,6684,6710,6714,6742,6746,6750,6768,6774,6778,6783,6814,6818,6843,6847,6851,6856,6879,6883,6887,6891,6909,6913,6923,6933,6937,6941,6945,6949,6953,6957,6961,6965,6970,6978,6982,7006,7013,7017,7021,7026,7034,7038,7063,7069,7073,7077,7085,7089,7094,7098,7104,7108,7112,7120],{"__ignoreMap":123},[128,6610,6611,6613],{"class":130,"line":131},[128,6612,2629],{"class":134},[128,6614,2656],{"class":566},[128,6616,6617],{"class":130,"line":151},[128,6618,194],{"emptyLinePlaceholder":193},[128,6620,6621],{"class":130,"line":203},[128,6622,6623],{"class":199},"\u002F\u002F2、全局函数配合友元  类外实现 - 先做函数模板声明，下方在做函数模板定义，在做友元\n",[128,6625,6626,6628,6630,6632,6634,6636,6638,6640,6642,6644,6646],{"class":130,"line":233},[128,6627,5],{"class":134},[128,6629,138],{"class":137},[128,6631,726],{"class":134},[128,6633,4674],{"class":144},[128,6635,222],{"class":137},[128,6637,726],{"class":134},[128,6639,4681],{"class":144},[128,6641,4581],{"class":137},[128,6643,726],{"class":134},[128,6645,5534],{"class":144},[128,6647,472],{"class":137},[128,6649,6650],{"class":130,"line":248},[128,6651,194],{"emptyLinePlaceholder":193},[128,6653,6654],{"class":130,"line":259},[128,6655,6656],{"class":199},"\u002F\u002F如果声明了函数模板，可以将实现写到后面，否则需要将实现体写到类的前面让编译器提前看到\n",[128,6658,6659],{"class":130,"line":270},[128,6660,6661],{"class":199},"\u002F\u002Ftemplate\u003Cclass T1, class T2> void printPerson2(Person\u003CT1, T2> & p); \n",[128,6663,6664],{"class":130,"line":276},[128,6665,194],{"emptyLinePlaceholder":193},[128,6667,6668,6670,6672,6674,6676,6678,6680,6682],{"class":130,"line":281},[128,6669,5],{"class":134},[128,6671,138],{"class":137},[128,6673,726],{"class":134},[128,6675,4674],{"class":144},[128,6677,222],{"class":137},[128,6679,726],{"class":134},[128,6681,4681],{"class":144},[128,6683,148],{"class":137},[128,6685,6686,6688,6690,6692,6694,6696,6698,6700,6702,6704,6706,6708],{"class":130,"line":287},[128,6687,206],{"class":134},[128,6689,4690],{"class":144},[128,6691,212],{"class":137},[128,6693,2887],{"class":144},[128,6695,138],{"class":137},[128,6697,4699],{"class":144},[128,6699,222],{"class":137},[128,6701,4704],{"class":144},[128,6703,4581],{"class":137},[128,6705,382],{"class":134},[128,6707,3941],{"class":218},[128,6709,395],{"class":137},[128,6711,6712],{"class":130,"line":310},[128,6713,401],{"class":137},[128,6715,6716,6718,6720,6723,6725,6728,6730,6733,6735,6738,6740],{"class":130,"line":322},[128,6717,560],{"class":137},[128,6719,563],{"class":134},[128,6721,6722],{"class":566}," \"类外实现 ---- 姓名： \"",[128,6724,570],{"class":134},[128,6726,6727],{"class":137}," p.m_Name ",[128,6729,563],{"class":134},[128,6731,6732],{"class":566}," \" 年龄：\"",[128,6734,570],{"class":134},[128,6736,6737],{"class":137}," p.m_Age ",[128,6739,563],{"class":134},[128,6741,577],{"class":137},[128,6743,6744],{"class":130,"line":331},[128,6745,273],{"class":137},[128,6747,6748],{"class":130,"line":340},[128,6749,194],{"emptyLinePlaceholder":193},[128,6751,6752,6754,6756,6758,6760,6762,6764,6766],{"class":130,"line":345},[128,6753,5],{"class":134},[128,6755,138],{"class":137},[128,6757,726],{"class":134},[128,6759,4674],{"class":144},[128,6761,222],{"class":137},[128,6763,726],{"class":134},[128,6765,4681],{"class":144},[128,6767,148],{"class":137},[128,6769,6770,6772],{"class":130,"line":350},[128,6771,726],{"class":134},[128,6773,2667],{"class":144},[128,6775,6776],{"class":130,"line":356},[128,6777,401],{"class":137},[128,6779,6780],{"class":130,"line":369},[128,6781,6782],{"class":199},"    \u002F\u002F1、全局函数配合友元   类内实现\n",[128,6784,6785,6788,6791,6794,6796,6798,6800,6802,6804,6806,6808,6810,6812],{"class":130,"line":398},[128,6786,6787],{"class":134},"    friend",[128,6789,6790],{"class":134}," void",[128,6792,6793],{"class":144}," printPerson",[128,6795,212],{"class":137},[128,6797,2887],{"class":144},[128,6799,138],{"class":137},[128,6801,4699],{"class":144},[128,6803,222],{"class":137},[128,6805,4704],{"class":144},[128,6807,4581],{"class":137},[128,6809,382],{"class":134},[128,6811,3941],{"class":218},[128,6813,395],{"class":137},[128,6815,6816],{"class":130,"line":404},[128,6817,1231],{"class":137},[128,6819,6820,6822,6824,6827,6829,6831,6833,6835,6837,6839,6841],{"class":130,"line":414},[128,6821,1432],{"class":137},[128,6823,563],{"class":134},[128,6825,6826],{"class":566}," \"姓名： \"",[128,6828,570],{"class":134},[128,6830,6727],{"class":137},[128,6832,563],{"class":134},[128,6834,6732],{"class":566},[128,6836,570],{"class":134},[128,6838,6737],{"class":137},[128,6840,563],{"class":134},[128,6842,577],{"class":137},[128,6844,6845],{"class":130,"line":423},[128,6846,1362],{"class":137},[128,6848,6849],{"class":130,"line":432},[128,6850,194],{"emptyLinePlaceholder":193},[128,6852,6853],{"class":130,"line":437},[128,6854,6855],{"class":199},"    \u002F\u002F全局函数配合友元  类外实现\n",[128,6857,6858,6860,6862,6864,6867,6869,6872,6874,6876],{"class":130,"line":442},[128,6859,6787],{"class":134},[128,6861,6790],{"class":134},[128,6863,4690],{"class":144},[128,6865,6866],{"class":137},"\u003C>(Person",[128,6868,138],{"class":134},[128,6870,6871],{"class":137},"T1, T2",[128,6873,1160],{"class":134},[128,6875,1097],{"class":134},[128,6877,6878],{"class":137}," p);\n",[128,6880,6881],{"class":130,"line":453},[128,6882,194],{"emptyLinePlaceholder":193},[128,6884,6885],{"class":130,"line":458},[128,6886,2676],{"class":134},[128,6888,6889],{"class":130,"line":475},[128,6890,194],{"emptyLinePlaceholder":193},[128,6892,6893,6895,6897,6899,6901,6903,6905,6907],{"class":130,"line":490},[128,6894,2681],{"class":144},[128,6896,212],{"class":137},[128,6898,4699],{"class":144},[128,6900,2689],{"class":218},[128,6902,222],{"class":137},[128,6904,4704],{"class":144},[128,6906,2696],{"class":218},[128,6908,395],{"class":137},[128,6910,6911],{"class":130,"line":496},[128,6912,1231],{"class":137},[128,6914,6915,6917,6919,6921],{"class":130,"line":502},[128,6916,2707],{"class":468},[128,6918,2710],{"class":137},[128,6920,242],{"class":134},[128,6922,2715],{"class":137},[128,6924,6925,6927,6929,6931],{"class":130,"line":507},[128,6926,2707],{"class":468},[128,6928,2722],{"class":137},[128,6930,242],{"class":134},[128,6932,2727],{"class":137},[128,6934,6935],{"class":130,"line":513},[128,6936,1362],{"class":137},[128,6938,6939],{"class":130,"line":519},[128,6940,194],{"emptyLinePlaceholder":193},[128,6942,6943],{"class":130,"line":528},[128,6944,6129],{"class":134},[128,6946,6947],{"class":130,"line":533},[128,6948,5585],{"class":137},[128,6950,6951],{"class":130,"line":539},[128,6952,5590],{"class":137},[128,6954,6955],{"class":130,"line":552},[128,6956,194],{"emptyLinePlaceholder":193},[128,6958,6959],{"class":130,"line":557},[128,6960,2748],{"class":137},[128,6962,6963],{"class":130,"line":580},[128,6964,194],{"emptyLinePlaceholder":193},[128,6966,6967],{"class":130,"line":598},[128,6968,6969],{"class":199},"\u002F\u002F1、全局函数在类内实现\n",[128,6971,6972,6974,6976],{"class":130,"line":603},[128,6973,206],{"class":134},[128,6975,447],{"class":144},[128,6977,450],{"class":137},[128,6979,6980],{"class":130,"line":608},[128,6981,401],{"class":137},[128,6983,6984,6986,6988,6990,6992,6994,6996,6998,7000,7002,7004],{"class":130,"line":613},[128,6985,3108],{"class":137},[128,6987,138],{"class":134},[128,6989,3574],{"class":137},[128,6991,546],{"class":134},[128,6993,4628],{"class":134},[128,6995,18],{"class":144},[128,6997,212],{"class":137},[128,6999,3115],{"class":566},[128,7001,222],{"class":137},[128,7003,5784],{"class":468},[128,7005,1519],{"class":137},[128,7007,7008,7011],{"class":130,"line":624},[128,7009,7010],{"class":144},"    printPerson",[128,7012,4649],{"class":137},[128,7014,7015],{"class":130,"line":629},[128,7016,273],{"class":137},[128,7018,7019],{"class":130,"line":638},[128,7020,194],{"emptyLinePlaceholder":193},[128,7022,7023],{"class":130,"line":643},[128,7024,7025],{"class":199},"\u002F\u002F2、全局函数在类外实现\n",[128,7027,7028,7030,7032],{"class":130,"line":648},[128,7029,206],{"class":134},[128,7031,934],{"class":144},[128,7033,450],{"class":137},[128,7035,7036],{"class":130,"line":659},[128,7037,401],{"class":137},[128,7039,7040,7042,7044,7046,7048,7050,7052,7054,7057,7059,7061],{"class":130,"line":1620},[128,7041,3108],{"class":137},[128,7043,138],{"class":134},[128,7045,3574],{"class":137},[128,7047,546],{"class":134},[128,7049,4628],{"class":134},[128,7051,18],{"class":144},[128,7053,212],{"class":137},[128,7055,7056],{"class":566},"\"Jerry\"",[128,7058,222],{"class":137},[128,7060,4946],{"class":468},[128,7062,1519],{"class":137},[128,7064,7065,7067],{"class":130,"line":1644},[128,7066,4821],{"class":144},[128,7068,4649],{"class":137},[128,7070,7071],{"class":130,"line":1652},[128,7072,273],{"class":137},[128,7074,7075],{"class":130,"line":1659},[128,7076,194],{"emptyLinePlaceholder":193},[128,7078,7079,7081,7083],{"class":130,"line":1664},[128,7080,546],{"class":134},[128,7082,618],{"class":144},[128,7084,621],{"class":137},[128,7086,7087],{"class":130,"line":1669},[128,7088,194],{"emptyLinePlaceholder":193},[128,7090,7091],{"class":130,"line":1678},[128,7092,7093],{"class":199},"    \u002F\u002Ftest01();\n",[128,7095,7096],{"class":130,"line":1683},[128,7097,194],{"emptyLinePlaceholder":193},[128,7099,7100,7102],{"class":130,"line":1690},[128,7101,994],{"class":144},[128,7103,635],{"class":137},[128,7105,7106],{"class":130,"line":1697},[128,7107,194],{"emptyLinePlaceholder":193},[128,7109,7110],{"class":130,"line":1702},[128,7111,194],{"emptyLinePlaceholder":193},[128,7113,7114,7116,7118],{"class":130,"line":1707},[128,7115,651],{"class":134},[128,7117,654],{"class":468},[128,7119,472],{"class":137},[128,7121,7122],{"class":130,"line":1716},[128,7123,273],{"class":137},[18,7125,7126],{},[22,7127,159],{},[118,7129,7132],{"className":7130,"code":7131,"language":671,"meta":123},[669],"类外实现 ---- 姓名： Jerry 年龄：30\n",[125,7133,7131],{"__ignoreMap":123},[18,7135,7136],{},"Summary: It is recommended to implement global functions within classes for simpler usage, allowing the compiler to directly recognize them.",[98,7138,7140],{"id":7139},"class-template-example","Class Template Example",[18,7142,7143],{},"Case Description: Implement a generic array class with the following requirements:",[62,7145,7146,7149,7152,7155,7158,7161,7164],{},[65,7147,7148],{},"Capable of storing data of both built-in and custom data types.",[65,7150,7151],{},"Store the data from the array to the heap area.",[65,7153,7154],{},"You can pass the array's capacity into the constructor.",[65,7156,7157],{},"Provide the corresponding copy constructor and operator= to prevent shallow copy issues.",[65,7159,7160],{},"Tail insertion and tail deletion methods are used for adding and removing data from the end of an array.",[65,7162,7163],{},"You can access array elements using subscript notation.",[65,7165,7166,7167,7170,7171,7174],{},"You can obtain both the current number of elements and the capacity of an array. This is commonly available in dynamic array implementations (like ",[125,7168,7169],{},"std::vector"," in C++ or ",[125,7172,7173],{},"ArrayList"," in Java). The \"current number of elements\" refers to how many items are actually stored, while the \"capacity\" is the total space currently allocated, which may be larger to allow for efficient appending of new items.",[18,7176,7177],{},[22,7178,183],{},[18,7180,7181],{},"The code in myArray.hpp",[118,7183,7185],{"className":120,"code":7184,"language":122,"meta":123,"style":123},"#pragma once\n#include \u003Ciostream>\nusing namespace std;\n\ntemplate\u003Cclass T>\nclass MyArray\n{\npublic:\n    \n    \u002F\u002F构造函数\n    MyArray(int capacity)\n    {\n        this->m_Capacity = capacity;\n        this->m_Size = 0;\n        pAddress = new T[this->m_Capacity];\n    }\n\n    \u002F\u002F拷贝构造\n    MyArray(const MyArray & arr)\n    {\n        this->m_Capacity = arr.m_Capacity;\n        this->m_Size = arr.m_Size;\n        this->pAddress = new T[this->m_Capacity];\n        for (int i = 0; i \u003C this->m_Size; i++)\n        {\n            \u002F\u002F如果T为对象，而且还包含指针，必须需要重载 = 操作符，因为这个等号不是 构造 而是赋值，\n            \u002F\u002F 普通类型可以直接= 但是指针类型需要深拷贝\n            this->pAddress[i] = arr.pAddress[i];\n        }\n    }\n\n    \u002F\u002F重载= 操作符  防止浅拷贝问题\n    MyArray& operator=(const MyArray& myarray) {\n\n        if (this->pAddress != NULL) {\n            delete[] this->pAddress;\n            this->m_Capacity = 0;\n            this->m_Size = 0;\n        }\n\n        this->m_Capacity = myarray.m_Capacity;\n        this->m_Size = myarray.m_Size;\n        this->pAddress = new T[this->m_Capacity];\n        for (int i = 0; i \u003C this->m_Size; i++) {\n            this->pAddress[i] = myarray[i];\n        }\n        return *this;\n    }\n\n    \u002F\u002F重载[] 操作符  arr[0]\n    T& operator [](int index)\n    {\n        return this->pAddress[index]; \u002F\u002F不考虑越界，用户自己去处理\n    }\n\n    \u002F\u002F尾插法\n    void Push_back(const T & val)\n    {\n        if (this->m_Capacity == this->m_Size)\n        {\n            return;\n        }\n        this->pAddress[this->m_Size] = val;\n        this->m_Size++;\n    }\n\n    \u002F\u002F尾删法\n    void Pop_back()\n    {\n        if (this->m_Size == 0)\n        {\n            return;\n        }\n        this->m_Size--;\n    }\n\n    \u002F\u002F获取数组容量\n    int getCapacity()\n    {\n        return this->m_Capacity;\n    }\n\n    \u002F\u002F获取数组大小\n    int getSize()\n    {\n        return this->m_Size;\n    }\n\n    \u002F\u002F析构\n    ~MyArray()\n    {\n        if (this->pAddress != NULL)\n        {\n            delete[] this->pAddress;\n            this->pAddress = NULL;\n            this->m_Capacity = 0;\n            this->m_Size = 0;\n        }\n    }\n\nprivate:\n    T * pAddress;  \u002F\u002F指向一个堆空间，这个空间存储真正的数据\n    int m_Capacity; \u002F\u002F容量\n    int m_Size;   \u002F\u002F 大小\n};\n",[125,7186,7187,7193,7199,7209,7213,7225,7232,7236,7240,7244,7249,7263,7267,7279,7292,7311,7315,7319,7324,7341,7345,7356,7367,7384,7411,7415,7420,7425,7438,7442,7446,7450,7455,7479,7483,7500,7510,7522,7534,7538,7542,7553,7564,7580,7606,7617,7621,7632,7636,7640,7645,7666,7670,7682,7686,7690,7695,7715,7719,7736,7740,7747,7751,7768,7779,7783,7787,7792,7801,7805,7821,7825,7831,7835,7846,7850,7854,7859,7868,7872,7881,7885,7889,7894,7903,7907,7916,7920,7925,7931,7939,7944,7961,7966,7975,7988,8001,8014,8019,8024,8029,8034,8049,8060,8071],{"__ignoreMap":123},[128,7188,7189,7191],{"class":130,"line":131},[128,7190,6169],{"class":134},[128,7192,6172],{"class":144},[128,7194,7195,7197],{"class":130,"line":151},[128,7196,2629],{"class":134},[128,7198,6179],{"class":566},[128,7200,7201,7203,7205,7207],{"class":130,"line":203},[128,7202,2637],{"class":134},[128,7204,2640],{"class":134},[128,7206,2643],{"class":144},[128,7208,472],{"class":137},[128,7210,7211],{"class":130,"line":233},[128,7212,194],{"emptyLinePlaceholder":193},[128,7214,7215,7217,7219,7221,7223],{"class":130,"line":248},[128,7216,5],{"class":134},[128,7218,138],{"class":137},[128,7220,726],{"class":134},[128,7222,145],{"class":144},[128,7224,148],{"class":137},[128,7226,7227,7229],{"class":130,"line":259},[128,7228,726],{"class":134},[128,7230,7231],{"class":144}," MyArray\n",[128,7233,7234],{"class":130,"line":270},[128,7235,401],{"class":137},[128,7237,7238],{"class":130,"line":276},[128,7239,2676],{"class":134},[128,7241,7242],{"class":130,"line":281},[128,7243,493],{"class":137},[128,7245,7246],{"class":130,"line":287},[128,7247,7248],{"class":199},"    \u002F\u002F构造函数\n",[128,7250,7251,7254,7256,7258,7261],{"class":130,"line":310},[128,7252,7253],{"class":144},"    MyArray",[128,7255,212],{"class":137},[128,7257,546],{"class":134},[128,7259,7260],{"class":218}," capacity",[128,7262,395],{"class":137},[128,7264,7265],{"class":130,"line":322},[128,7266,1231],{"class":137},[128,7268,7269,7271,7274,7276],{"class":130,"line":331},[128,7270,2707],{"class":468},[128,7272,7273],{"class":137},"->m_Capacity ",[128,7275,242],{"class":134},[128,7277,7278],{"class":137}," capacity;\n",[128,7280,7281,7283,7286,7288,7290],{"class":130,"line":340},[128,7282,2707],{"class":468},[128,7284,7285],{"class":137},"->m_Size ",[128,7287,242],{"class":134},[128,7289,654],{"class":468},[128,7291,472],{"class":137},[128,7293,7294,7297,7299,7302,7305,7308],{"class":130,"line":345},[128,7295,7296],{"class":137},"        pAddress ",[128,7298,242],{"class":134},[128,7300,7301],{"class":134}," new",[128,7303,7304],{"class":137}," T[",[128,7306,7307],{"class":468},"this",[128,7309,7310],{"class":137},"->m_Capacity];\n",[128,7312,7313],{"class":130,"line":350},[128,7314,1362],{"class":137},[128,7316,7317],{"class":130,"line":356},[128,7318,194],{"emptyLinePlaceholder":193},[128,7320,7321],{"class":130,"line":369},[128,7322,7323],{"class":199},"    \u002F\u002F拷贝构造\n",[128,7325,7326,7328,7330,7332,7335,7337,7339],{"class":130,"line":398},[128,7327,7253],{"class":144},[128,7329,212],{"class":137},[128,7331,5994],{"class":134},[128,7333,7334],{"class":144}," MyArray",[128,7336,1097],{"class":134},[128,7338,1182],{"class":218},[128,7340,395],{"class":137},[128,7342,7343],{"class":130,"line":404},[128,7344,1231],{"class":137},[128,7346,7347,7349,7351,7353],{"class":130,"line":414},[128,7348,2707],{"class":468},[128,7350,7273],{"class":137},[128,7352,242],{"class":134},[128,7354,7355],{"class":137}," arr.m_Capacity;\n",[128,7357,7358,7360,7362,7364],{"class":130,"line":423},[128,7359,2707],{"class":468},[128,7361,7285],{"class":137},[128,7363,242],{"class":134},[128,7365,7366],{"class":137}," arr.m_Size;\n",[128,7368,7369,7371,7374,7376,7378,7380,7382],{"class":130,"line":432},[128,7370,2707],{"class":468},[128,7372,7373],{"class":137},"->pAddress ",[128,7375,242],{"class":134},[128,7377,7301],{"class":134},[128,7379,7304],{"class":137},[128,7381,7307],{"class":468},[128,7383,7310],{"class":137},[128,7385,7386,7388,7390,7392,7394,7396,7398,7400,7402,7404,7407,7409],{"class":130,"line":437},[128,7387,1252],{"class":134},[128,7389,1204],{"class":137},[128,7391,546],{"class":134},[128,7393,1209],{"class":137},[128,7395,242],{"class":134},[128,7397,654],{"class":468},[128,7399,1216],{"class":137},[128,7401,138],{"class":134},[128,7403,3505],{"class":468},[128,7405,7406],{"class":137},"->m_Size; i",[128,7408,1224],{"class":134},[128,7410,395],{"class":137},[128,7412,7413],{"class":130,"line":442},[128,7414,1286],{"class":137},[128,7416,7417],{"class":130,"line":453},[128,7418,7419],{"class":199},"            \u002F\u002F如果T为对象，而且还包含指针，必须需要重载 = 操作符，因为这个等号不是 构造 而是赋值，\n",[128,7421,7422],{"class":130,"line":458},[128,7423,7424],{"class":199},"            \u002F\u002F 普通类型可以直接= 但是指针类型需要深拷贝\n",[128,7426,7427,7430,7433,7435],{"class":130,"line":475},[128,7428,7429],{"class":468},"            this",[128,7431,7432],{"class":137},"->pAddress[i] ",[128,7434,242],{"class":134},[128,7436,7437],{"class":137}," arr.pAddress[i];\n",[128,7439,7440],{"class":130,"line":490},[128,7441,1324],{"class":137},[128,7443,7444],{"class":130,"line":496},[128,7445,1362],{"class":137},[128,7447,7448],{"class":130,"line":502},[128,7449,194],{"emptyLinePlaceholder":193},[128,7451,7452],{"class":130,"line":507},[128,7453,7454],{"class":199},"    \u002F\u002F重载= 操作符  防止浅拷贝问题\n",[128,7456,7457,7459,7461,7464,7466,7468,7470,7472,7474,7477],{"class":130,"line":513},[128,7458,7253],{"class":144},[128,7460,382],{"class":134},[128,7462,7463],{"class":134}," operator",[128,7465,242],{"class":144},[128,7467,212],{"class":137},[128,7469,5994],{"class":134},[128,7471,7334],{"class":144},[128,7473,382],{"class":134},[128,7475,7476],{"class":218}," myarray",[128,7478,230],{"class":137},[128,7480,7481],{"class":130,"line":519},[128,7482,194],{"emptyLinePlaceholder":193},[128,7484,7485,7487,7489,7491,7493,7495,7498],{"class":130,"line":528},[128,7486,1329],{"class":134},[128,7488,1204],{"class":137},[128,7490,7307],{"class":468},[128,7492,7373],{"class":137},[128,7494,1335],{"class":134},[128,7496,7497],{"class":468}," NULL",[128,7499,230],{"class":137},[128,7501,7502,7505,7507],{"class":130,"line":533},[128,7503,7504],{"class":134},"            delete[]",[128,7506,3505],{"class":468},[128,7508,7509],{"class":137},"->pAddress;\n",[128,7511,7512,7514,7516,7518,7520],{"class":130,"line":539},[128,7513,7429],{"class":468},[128,7515,7273],{"class":137},[128,7517,242],{"class":134},[128,7519,654],{"class":468},[128,7521,472],{"class":137},[128,7523,7524,7526,7528,7530,7532],{"class":130,"line":552},[128,7525,7429],{"class":468},[128,7527,7285],{"class":137},[128,7529,242],{"class":134},[128,7531,654],{"class":468},[128,7533,472],{"class":137},[128,7535,7536],{"class":130,"line":557},[128,7537,1324],{"class":137},[128,7539,7540],{"class":130,"line":580},[128,7541,194],{"emptyLinePlaceholder":193},[128,7543,7544,7546,7548,7550],{"class":130,"line":598},[128,7545,2707],{"class":468},[128,7547,7273],{"class":137},[128,7549,242],{"class":134},[128,7551,7552],{"class":137}," myarray.m_Capacity;\n",[128,7554,7555,7557,7559,7561],{"class":130,"line":603},[128,7556,2707],{"class":468},[128,7558,7285],{"class":137},[128,7560,242],{"class":134},[128,7562,7563],{"class":137}," myarray.m_Size;\n",[128,7565,7566,7568,7570,7572,7574,7576,7578],{"class":130,"line":608},[128,7567,2707],{"class":468},[128,7569,7373],{"class":137},[128,7571,242],{"class":134},[128,7573,7301],{"class":134},[128,7575,7304],{"class":137},[128,7577,7307],{"class":468},[128,7579,7310],{"class":137},[128,7581,7582,7584,7586,7588,7590,7592,7594,7596,7598,7600,7602,7604],{"class":130,"line":613},[128,7583,1252],{"class":134},[128,7585,1204],{"class":137},[128,7587,546],{"class":134},[128,7589,1209],{"class":137},[128,7591,242],{"class":134},[128,7593,654],{"class":468},[128,7595,1216],{"class":137},[128,7597,138],{"class":134},[128,7599,3505],{"class":468},[128,7601,7406],{"class":137},[128,7603,1224],{"class":134},[128,7605,230],{"class":137},[128,7607,7608,7610,7612,7614],{"class":130,"line":624},[128,7609,7429],{"class":468},[128,7611,7432],{"class":137},[128,7613,242],{"class":134},[128,7615,7616],{"class":137}," myarray[i];\n",[128,7618,7619],{"class":130,"line":629},[128,7620,1324],{"class":137},[128,7622,7623,7625,7628,7630],{"class":130,"line":638},[128,7624,2822],{"class":134},[128,7626,7627],{"class":134}," *",[128,7629,7307],{"class":468},[128,7631,472],{"class":137},[128,7633,7634],{"class":130,"line":643},[128,7635,1362],{"class":137},[128,7637,7638],{"class":130,"line":648},[128,7639,194],{"emptyLinePlaceholder":193},[128,7641,7642],{"class":130,"line":659},[128,7643,7644],{"class":199},"    \u002F\u002F重载[] 操作符  arr[0]\n",[128,7646,7647,7650,7652,7654,7657,7659,7661,7664],{"class":130,"line":1620},[128,7648,7649],{"class":144},"    T",[128,7651,382],{"class":134},[128,7653,7463],{"class":134},[128,7655,7656],{"class":144}," []",[128,7658,212],{"class":137},[128,7660,546],{"class":134},[128,7662,7663],{"class":218}," index",[128,7665,395],{"class":137},[128,7667,7668],{"class":130,"line":1644},[128,7669,1231],{"class":137},[128,7671,7672,7674,7676,7679],{"class":130,"line":1652},[128,7673,2822],{"class":134},[128,7675,3505],{"class":468},[128,7677,7678],{"class":137},"->pAddress[index];",[128,7680,7681],{"class":199}," \u002F\u002F不考虑越界，用户自己去处理\n",[128,7683,7684],{"class":130,"line":1659},[128,7685,1362],{"class":137},[128,7687,7688],{"class":130,"line":1664},[128,7689,194],{"emptyLinePlaceholder":193},[128,7691,7692],{"class":130,"line":1669},[128,7693,7694],{"class":199},"    \u002F\u002F尾插法\n",[128,7696,7697,7699,7702,7704,7706,7708,7710,7713],{"class":130,"line":1678},[128,7698,2499],{"class":134},[128,7700,7701],{"class":144}," Push_back",[128,7703,212],{"class":137},[128,7705,5994],{"class":134},[128,7707,145],{"class":144},[128,7709,1097],{"class":134},[128,7711,7712],{"class":218}," val",[128,7714,395],{"class":137},[128,7716,7717],{"class":130,"line":1683},[128,7718,1231],{"class":137},[128,7720,7721,7723,7725,7727,7729,7731,7733],{"class":130,"line":1690},[128,7722,1329],{"class":134},[128,7724,1204],{"class":137},[128,7726,7307],{"class":468},[128,7728,7273],{"class":137},[128,7730,2810],{"class":134},[128,7732,3505],{"class":468},[128,7734,7735],{"class":137},"->m_Size)\n",[128,7737,7738],{"class":130,"line":1697},[128,7739,1286],{"class":137},[128,7741,7742,7745],{"class":130,"line":1702},[128,7743,7744],{"class":134},"            return",[128,7746,472],{"class":137},[128,7748,7749],{"class":130,"line":1707},[128,7750,1324],{"class":137},[128,7752,7753,7755,7758,7760,7763,7765],{"class":130,"line":1716},[128,7754,2707],{"class":468},[128,7756,7757],{"class":137},"->pAddress[",[128,7759,7307],{"class":468},[128,7761,7762],{"class":137},"->m_Size] ",[128,7764,242],{"class":134},[128,7766,7767],{"class":137}," val;\n",[128,7769,7770,7772,7775,7777],{"class":130,"line":3105},[128,7771,2707],{"class":468},[128,7773,7774],{"class":137},"->m_Size",[128,7776,1224],{"class":134},[128,7778,472],{"class":137},[128,7780,7781],{"class":130,"line":3125},[128,7782,1362],{"class":137},[128,7784,7785],{"class":130,"line":3142},[128,7786,194],{"emptyLinePlaceholder":193},[128,7788,7789],{"class":130,"line":3148},[128,7790,7791],{"class":199},"    \u002F\u002F尾删法\n",[128,7793,7794,7796,7799],{"class":130,"line":3154},[128,7795,2499],{"class":134},[128,7797,7798],{"class":144}," Pop_back",[128,7800,450],{"class":137},[128,7802,7803],{"class":130,"line":3168},[128,7804,1231],{"class":137},[128,7806,7807,7809,7811,7813,7815,7817,7819],{"class":130,"line":3175},[128,7808,1329],{"class":134},[128,7810,1204],{"class":137},[128,7812,7307],{"class":468},[128,7814,7285],{"class":137},[128,7816,2810],{"class":134},[128,7818,654],{"class":468},[128,7820,395],{"class":137},[128,7822,7823],{"class":130,"line":3180},[128,7824,1286],{"class":137},[128,7826,7827,7829],{"class":130,"line":3194},[128,7828,7744],{"class":134},[128,7830,472],{"class":137},[128,7832,7833],{"class":130,"line":3199},[128,7834,1324],{"class":137},[128,7836,7837,7839,7841,7844],{"class":130,"line":3204},[128,7838,2707],{"class":468},[128,7840,7774],{"class":137},[128,7842,7843],{"class":134},"--",[128,7845,472],{"class":137},[128,7847,7848],{"class":130,"line":3209},[128,7849,1362],{"class":137},[128,7851,7852],{"class":130,"line":3223},[128,7853,194],{"emptyLinePlaceholder":193},[128,7855,7856],{"class":130,"line":3228},[128,7857,7858],{"class":199},"    \u002F\u002F获取数组容量\n",[128,7860,7861,7863,7866],{"class":130,"line":3233},[128,7862,236],{"class":134},[128,7864,7865],{"class":144}," getCapacity",[128,7867,450],{"class":137},[128,7869,7870],{"class":130,"line":3238},[128,7871,1231],{"class":137},[128,7873,7874,7876,7878],{"class":130,"line":3247},[128,7875,2822],{"class":134},[128,7877,3505],{"class":468},[128,7879,7880],{"class":137},"->m_Capacity;\n",[128,7882,7883],{"class":130,"line":3252},[128,7884,1362],{"class":137},[128,7886,7887],{"class":130,"line":3259},[128,7888,194],{"emptyLinePlaceholder":193},[128,7890,7891],{"class":130,"line":3264},[128,7892,7893],{"class":199},"    \u002F\u002F获取数组大小\n",[128,7895,7896,7898,7901],{"class":130,"line":3271},[128,7897,236],{"class":134},[128,7899,7900],{"class":144}," getSize",[128,7902,450],{"class":137},[128,7904,7905],{"class":130,"line":3276},[128,7906,1231],{"class":137},[128,7908,7909,7911,7913],{"class":130,"line":3281},[128,7910,2822],{"class":134},[128,7912,3505],{"class":468},[128,7914,7915],{"class":137},"->m_Size;\n",[128,7917,7918],{"class":130,"line":3290},[128,7919,1362],{"class":137},[128,7921,7923],{"class":130,"line":7922},88,[128,7924,194],{"emptyLinePlaceholder":193},[128,7926,7928],{"class":130,"line":7927},89,[128,7929,7930],{"class":199},"    \u002F\u002F析构\n",[128,7932,7934,7937],{"class":130,"line":7933},90,[128,7935,7936],{"class":144},"    ~MyArray",[128,7938,450],{"class":137},[128,7940,7942],{"class":130,"line":7941},91,[128,7943,1231],{"class":137},[128,7945,7947,7949,7951,7953,7955,7957,7959],{"class":130,"line":7946},92,[128,7948,1329],{"class":134},[128,7950,1204],{"class":137},[128,7952,7307],{"class":468},[128,7954,7373],{"class":137},[128,7956,1335],{"class":134},[128,7958,7497],{"class":468},[128,7960,395],{"class":137},[128,7962,7964],{"class":130,"line":7963},93,[128,7965,1286],{"class":137},[128,7967,7969,7971,7973],{"class":130,"line":7968},94,[128,7970,7504],{"class":134},[128,7972,3505],{"class":468},[128,7974,7509],{"class":137},[128,7976,7978,7980,7982,7984,7986],{"class":130,"line":7977},95,[128,7979,7429],{"class":468},[128,7981,7373],{"class":137},[128,7983,242],{"class":134},[128,7985,7497],{"class":468},[128,7987,472],{"class":137},[128,7989,7991,7993,7995,7997,7999],{"class":130,"line":7990},96,[128,7992,7429],{"class":468},[128,7994,7273],{"class":137},[128,7996,242],{"class":134},[128,7998,654],{"class":468},[128,8000,472],{"class":137},[128,8002,8004,8006,8008,8010,8012],{"class":130,"line":8003},97,[128,8005,7429],{"class":468},[128,8007,7285],{"class":137},[128,8009,242],{"class":134},[128,8011,654],{"class":468},[128,8013,472],{"class":137},[128,8015,8017],{"class":130,"line":8016},98,[128,8018,1324],{"class":137},[128,8020,8022],{"class":130,"line":8021},99,[128,8023,1362],{"class":137},[128,8025,8027],{"class":130,"line":8026},100,[128,8028,194],{"emptyLinePlaceholder":193},[128,8030,8032],{"class":130,"line":8031},101,[128,8033,6129],{"class":134},[128,8035,8037,8040,8043,8046],{"class":130,"line":8036},102,[128,8038,8039],{"class":137},"    T ",[128,8041,8042],{"class":134},"*",[128,8044,8045],{"class":137}," pAddress;",[128,8047,8048],{"class":199},"  \u002F\u002F指向一个堆空间，这个空间存储真正的数据\n",[128,8050,8052,8054,8057],{"class":130,"line":8051},103,[128,8053,236],{"class":134},[128,8055,8056],{"class":137}," m_Capacity;",[128,8058,8059],{"class":199}," \u002F\u002F容量\n",[128,8061,8063,8065,8068],{"class":130,"line":8062},104,[128,8064,236],{"class":134},[128,8066,8067],{"class":137}," m_Size;",[128,8069,8070],{"class":199},"   \u002F\u002F 大小\n",[128,8072,8074],{"class":130,"line":8073},105,[128,8075,2748],{"class":137},[18,8077,8078,160,8080,164],{},[22,8079,159],{},[125,8081,163],{},[18,8083,8084],{},"Class template example—Array class encapsulation.cpp",[118,8086,8088],{"className":120,"code":8087,"language":122,"meta":123,"style":123},"#include \"myArray.hpp\"\n#include \u003Cstring>\n\nvoid printIntArray(MyArray\u003Cint>& arr) {\n    for (int i = 0; i \u003C arr.getSize(); i++) {\n        cout \u003C\u003C arr[i] \u003C\u003C \" \";\n    }\n    cout \u003C\u003C endl;\n}\n\n\u002F\u002F测试内置数据类型\nvoid test01()\n{\n    MyArray\u003Cint> array1(10);\n    for (int i = 0; i \u003C 10; i++)\n    {\n        array1.Push_back(i);\n    }\n    cout \u003C\u003C \"array1打印输出：\" \u003C\u003C endl;\n    printIntArray(array1);\n    cout \u003C\u003C \"array1的大小：\" \u003C\u003C array1.getSize() \u003C\u003C endl;\n    cout \u003C\u003C \"array1的容量：\" \u003C\u003C array1.getCapacity() \u003C\u003C endl;\n\n    cout \u003C\u003C \"--------------------------\" \u003C\u003C endl;\n\n    MyArray\u003Cint> array2(array1);\n    array2.Pop_back();\n    cout \u003C\u003C \"array2打印输出：\" \u003C\u003C endl;\n    printIntArray(array2);\n    cout \u003C\u003C \"array2的大小：\" \u003C\u003C array2.getSize() \u003C\u003C endl;\n    cout \u003C\u003C \"array2的容量：\" \u003C\u003C array2.getCapacity() \u003C\u003C endl;\n}\n\n\u002F\u002F测试自定义数据类型\nclass Person {\npublic:\n    Person() {} \n        Person(string name, int age) {\n        this->m_Name = name;\n        this->m_Age = age;\n    }\npublic:\n    string m_Name;\n    int m_Age;\n};\n\nvoid printPersonArray(MyArray\u003CPerson>& personArr)\n{\n    for (int i = 0; i \u003C personArr.getSize(); i++) {\n        cout \u003C\u003C \"姓名：\" \u003C\u003C personArr[i].m_Name \u003C\u003C \" 年龄： \" \u003C\u003C personArr[i].m_Age \u003C\u003C endl;\n    }\n\n}\n\nvoid test02()\n{\n    \u002F\u002F创建数组\n    MyArray\u003CPerson> pArray(10);\n    Person p1(\"孙悟空\", 30);\n    Person p2(\"韩信\", 20);\n    Person p3(\"妲己\", 18);\n    Person p4(\"王昭君\", 15);\n    Person p5(\"赵云\", 24);\n\n    \u002F\u002F插入数据\n    pArray.Push_back(p1);\n    pArray.Push_back(p2);\n    pArray.Push_back(p3);\n    pArray.Push_back(p4);\n    pArray.Push_back(p5);\n\n    printPersonArray(pArray);\n\n    cout \u003C\u003C \"pArray的大小：\" \u003C\u003C pArray.getSize() \u003C\u003C endl;\n    cout \u003C\u003C \"pArray的容量：\" \u003C\u003C pArray.getCapacity() \u003C\u003C endl;\n\n}\n\nint main() {\n\n    \u002F\u002Ftest01();\n\n    test02();\n\n\n    return 0;\n}\n",[125,8089,8090,8097,8103,8107,8131,8162,8176,8180,8188,8192,8196,8201,8209,8213,8229,8256,8260,8271,8275,8288,8296,8318,8340,8344,8357,8361,8372,8382,8395,8402,8424,8445,8449,8453,8458,8466,8470,8477,8496,8506,8516,8520,8524,8528,8534,8538,8542,8566,8570,8599,8627,8631,8635,8639,8643,8651,8655,8660,8679,8695,8712,8731,8750,8769,8773,8778,8788,8797,8806,8815,8824,8828,8836,8840,8862,8883,8887,8891,8895,8903,8907,8911,8915,8921,8925,8929,8937],{"__ignoreMap":123},[128,8091,8092,8094],{"class":130,"line":131},[128,8093,2629],{"class":134},[128,8095,8096],{"class":566}," \"myArray.hpp\"\n",[128,8098,8099,8101],{"class":130,"line":151},[128,8100,2629],{"class":134},[128,8102,2656],{"class":566},[128,8104,8105],{"class":130,"line":203},[128,8106,194],{"emptyLinePlaceholder":193},[128,8108,8109,8111,8114,8116,8119,8121,8123,8125,8127,8129],{"class":130,"line":233},[128,8110,206],{"class":134},[128,8112,8113],{"class":144}," printIntArray",[128,8115,212],{"class":137},[128,8117,8118],{"class":144},"MyArray",[128,8120,138],{"class":137},[128,8122,546],{"class":134},[128,8124,1160],{"class":137},[128,8126,382],{"class":134},[128,8128,1182],{"class":218},[128,8130,230],{"class":137},[128,8132,8133,8135,8137,8139,8141,8143,8145,8147,8149,8152,8155,8158,8160],{"class":130,"line":248},[128,8134,1201],{"class":134},[128,8136,1204],{"class":137},[128,8138,546],{"class":134},[128,8140,1209],{"class":137},[128,8142,242],{"class":134},[128,8144,654],{"class":468},[128,8146,1216],{"class":137},[128,8148,138],{"class":134},[128,8150,8151],{"class":137}," arr.",[128,8153,8154],{"class":144},"getSize",[128,8156,8157],{"class":137},"(); i",[128,8159,1224],{"class":134},[128,8161,230],{"class":137},[128,8163,8164,8166,8168,8170,8172,8174],{"class":130,"line":259},[128,8165,1432],{"class":137},[128,8167,563],{"class":134},[128,8169,1437],{"class":137},[128,8171,563],{"class":134},[128,8173,1442],{"class":566},[128,8175,472],{"class":137},[128,8177,8178],{"class":130,"line":270},[128,8179,1362],{"class":137},[128,8181,8182,8184,8186],{"class":130,"line":276},[128,8183,560],{"class":137},[128,8185,563],{"class":134},[128,8187,577],{"class":137},[128,8189,8190],{"class":130,"line":281},[128,8191,273],{"class":137},[128,8193,8194],{"class":130,"line":287},[128,8195,194],{"emptyLinePlaceholder":193},[128,8197,8198],{"class":130,"line":310},[128,8199,8200],{"class":199},"\u002F\u002F测试内置数据类型\n",[128,8202,8203,8205,8207],{"class":130,"line":322},[128,8204,206],{"class":134},[128,8206,447],{"class":144},[128,8208,450],{"class":137},[128,8210,8211],{"class":130,"line":331},[128,8212,401],{"class":137},[128,8214,8215,8217,8220,8223,8225,8227],{"class":130,"line":340},[128,8216,7253],{"class":137},[128,8218,8219],{"class":134},"\u003Cint>",[128,8221,8222],{"class":144}," array1",[128,8224,212],{"class":137},[128,8226,3120],{"class":468},[128,8228,1519],{"class":137},[128,8230,8231,8233,8235,8237,8239,8241,8243,8245,8247,8249,8252,8254],{"class":130,"line":345},[128,8232,1201],{"class":134},[128,8234,1204],{"class":137},[128,8236,546],{"class":134},[128,8238,1209],{"class":137},[128,8240,242],{"class":134},[128,8242,654],{"class":468},[128,8244,1216],{"class":137},[128,8246,138],{"class":134},[128,8248,469],{"class":468},[128,8250,8251],{"class":137},"; i",[128,8253,1224],{"class":134},[128,8255,395],{"class":137},[128,8257,8258],{"class":130,"line":350},[128,8259,1231],{"class":137},[128,8261,8262,8265,8268],{"class":130,"line":356},[128,8263,8264],{"class":137},"        array1.",[128,8266,8267],{"class":144},"Push_back",[128,8269,8270],{"class":137},"(i);\n",[128,8272,8273],{"class":130,"line":369},[128,8274,1362],{"class":137},[128,8276,8277,8279,8281,8284,8286],{"class":130,"line":398},[128,8278,560],{"class":137},[128,8280,563],{"class":134},[128,8282,8283],{"class":566}," \"array1打印输出：\"",[128,8285,570],{"class":134},[128,8287,577],{"class":137},[128,8289,8290,8293],{"class":130,"line":404},[128,8291,8292],{"class":144},"    printIntArray",[128,8294,8295],{"class":137},"(array1);\n",[128,8297,8298,8300,8302,8305,8307,8310,8312,8314,8316],{"class":130,"line":414},[128,8299,560],{"class":137},[128,8301,563],{"class":134},[128,8303,8304],{"class":566}," \"array1的大小：\"",[128,8306,570],{"class":134},[128,8308,8309],{"class":137}," array1.",[128,8311,8154],{"class":144},[128,8313,4747],{"class":137},[128,8315,563],{"class":134},[128,8317,577],{"class":137},[128,8319,8320,8322,8324,8327,8329,8331,8334,8336,8338],{"class":130,"line":423},[128,8321,560],{"class":137},[128,8323,563],{"class":134},[128,8325,8326],{"class":566}," \"array1的容量：\"",[128,8328,570],{"class":134},[128,8330,8309],{"class":137},[128,8332,8333],{"class":144},"getCapacity",[128,8335,4747],{"class":137},[128,8337,563],{"class":134},[128,8339,577],{"class":137},[128,8341,8342],{"class":130,"line":432},[128,8343,194],{"emptyLinePlaceholder":193},[128,8345,8346,8348,8350,8353,8355],{"class":130,"line":437},[128,8347,560],{"class":137},[128,8349,563],{"class":134},[128,8351,8352],{"class":566}," \"--------------------------\"",[128,8354,570],{"class":134},[128,8356,577],{"class":137},[128,8358,8359],{"class":130,"line":442},[128,8360,194],{"emptyLinePlaceholder":193},[128,8362,8363,8365,8367,8370],{"class":130,"line":453},[128,8364,7253],{"class":137},[128,8366,8219],{"class":134},[128,8368,8369],{"class":144}," array2",[128,8371,8295],{"class":137},[128,8373,8374,8377,8380],{"class":130,"line":458},[128,8375,8376],{"class":137},"    array2.",[128,8378,8379],{"class":144},"Pop_back",[128,8381,635],{"class":137},[128,8383,8384,8386,8388,8391,8393],{"class":130,"line":475},[128,8385,560],{"class":137},[128,8387,563],{"class":134},[128,8389,8390],{"class":566}," \"array2打印输出：\"",[128,8392,570],{"class":134},[128,8394,577],{"class":137},[128,8396,8397,8399],{"class":130,"line":490},[128,8398,8292],{"class":144},[128,8400,8401],{"class":137},"(array2);\n",[128,8403,8404,8406,8408,8411,8413,8416,8418,8420,8422],{"class":130,"line":496},[128,8405,560],{"class":137},[128,8407,563],{"class":134},[128,8409,8410],{"class":566}," \"array2的大小：\"",[128,8412,570],{"class":134},[128,8414,8415],{"class":137}," array2.",[128,8417,8154],{"class":144},[128,8419,4747],{"class":137},[128,8421,563],{"class":134},[128,8423,577],{"class":137},[128,8425,8426,8428,8430,8433,8435,8437,8439,8441,8443],{"class":130,"line":502},[128,8427,560],{"class":137},[128,8429,563],{"class":134},[128,8431,8432],{"class":566}," \"array2的容量：\"",[128,8434,570],{"class":134},[128,8436,8415],{"class":137},[128,8438,8333],{"class":144},[128,8440,4747],{"class":137},[128,8442,563],{"class":134},[128,8444,577],{"class":137},[128,8446,8447],{"class":130,"line":507},[128,8448,273],{"class":137},[128,8450,8451],{"class":130,"line":513},[128,8452,194],{"emptyLinePlaceholder":193},[128,8454,8455],{"class":130,"line":519},[128,8456,8457],{"class":199},"\u002F\u002F测试自定义数据类型\n",[128,8459,8460,8462,8464],{"class":130,"line":528},[128,8461,726],{"class":134},[128,8463,5534],{"class":144},[128,8465,5537],{"class":137},[128,8467,8468],{"class":130,"line":533},[128,8469,2676],{"class":134},[128,8471,8472,8474],{"class":130,"line":539},[128,8473,2681],{"class":144},[128,8475,8476],{"class":137},"() {} \n",[128,8478,8479,8482,8484,8486,8488,8490,8492,8494],{"class":130,"line":552},[128,8480,8481],{"class":144},"        Person",[128,8483,212],{"class":137},[128,8485,2686],{"class":144},[128,8487,2689],{"class":218},[128,8489,222],{"class":137},[128,8491,546],{"class":134},[128,8493,2696],{"class":218},[128,8495,230],{"class":137},[128,8497,8498,8500,8502,8504],{"class":130,"line":557},[128,8499,2707],{"class":468},[128,8501,2710],{"class":137},[128,8503,242],{"class":134},[128,8505,2715],{"class":137},[128,8507,8508,8510,8512,8514],{"class":130,"line":580},[128,8509,2707],{"class":468},[128,8511,2722],{"class":137},[128,8513,242],{"class":134},[128,8515,2727],{"class":137},[128,8517,8518],{"class":130,"line":598},[128,8519,1362],{"class":137},[128,8521,8522],{"class":130,"line":603},[128,8523,2676],{"class":134},[128,8525,8526],{"class":130,"line":608},[128,8527,2736],{"class":137},[128,8529,8530,8532],{"class":130,"line":613},[128,8531,236],{"class":134},[128,8533,2743],{"class":137},[128,8535,8536],{"class":130,"line":624},[128,8537,2748],{"class":137},[128,8539,8540],{"class":130,"line":629},[128,8541,194],{"emptyLinePlaceholder":193},[128,8543,8544,8546,8549,8551,8553,8555,8557,8559,8561,8564],{"class":130,"line":638},[128,8545,206],{"class":134},[128,8547,8548],{"class":144}," printPersonArray",[128,8550,212],{"class":137},[128,8552,8118],{"class":144},[128,8554,138],{"class":137},[128,8556,2887],{"class":144},[128,8558,1160],{"class":137},[128,8560,382],{"class":134},[128,8562,8563],{"class":218}," personArr",[128,8565,395],{"class":137},[128,8567,8568],{"class":130,"line":643},[128,8569,401],{"class":137},[128,8571,8572,8574,8576,8578,8580,8582,8584,8586,8588,8591,8593,8595,8597],{"class":130,"line":648},[128,8573,1201],{"class":134},[128,8575,1204],{"class":137},[128,8577,546],{"class":134},[128,8579,1209],{"class":137},[128,8581,242],{"class":134},[128,8583,654],{"class":468},[128,8585,1216],{"class":137},[128,8587,138],{"class":134},[128,8589,8590],{"class":137}," personArr.",[128,8592,8154],{"class":144},[128,8594,8157],{"class":137},[128,8596,1224],{"class":134},[128,8598,230],{"class":137},[128,8600,8601,8603,8605,8608,8610,8613,8615,8618,8620,8623,8625],{"class":130,"line":659},[128,8602,1432],{"class":137},[128,8604,563],{"class":134},[128,8606,8607],{"class":566}," \"姓名：\"",[128,8609,570],{"class":134},[128,8611,8612],{"class":137}," personArr[i].m_Name ",[128,8614,563],{"class":134},[128,8616,8617],{"class":566}," \" 年龄： \"",[128,8619,570],{"class":134},[128,8621,8622],{"class":137}," personArr[i].m_Age ",[128,8624,563],{"class":134},[128,8626,577],{"class":137},[128,8628,8629],{"class":130,"line":1620},[128,8630,1362],{"class":137},[128,8632,8633],{"class":130,"line":1644},[128,8634,194],{"emptyLinePlaceholder":193},[128,8636,8637],{"class":130,"line":1652},[128,8638,273],{"class":137},[128,8640,8641],{"class":130,"line":1659},[128,8642,194],{"emptyLinePlaceholder":193},[128,8644,8645,8647,8649],{"class":130,"line":1664},[128,8646,206],{"class":134},[128,8648,934],{"class":144},[128,8650,450],{"class":137},[128,8652,8653],{"class":130,"line":1669},[128,8654,401],{"class":137},[128,8656,8657],{"class":130,"line":1678},[128,8658,8659],{"class":199},"    \u002F\u002F创建数组\n",[128,8661,8662,8664,8666,8668,8670,8673,8675,8677],{"class":130,"line":1683},[128,8663,7253],{"class":137},[128,8665,138],{"class":134},[128,8667,2887],{"class":137},[128,8669,1160],{"class":134},[128,8671,8672],{"class":144}," pArray",[128,8674,212],{"class":137},[128,8676,3120],{"class":468},[128,8678,1519],{"class":137},[128,8680,8681,8683,8685,8687,8689,8691,8693],{"class":130,"line":1690},[128,8682,3108],{"class":137},[128,8684,2892],{"class":144},[128,8686,212],{"class":137},[128,8688,3585],{"class":566},[128,8690,222],{"class":137},[128,8692,4946],{"class":468},[128,8694,1519],{"class":137},[128,8696,8697,8699,8701,8703,8706,8708,8710],{"class":130,"line":1697},[128,8698,3108],{"class":137},[128,8700,2901],{"class":144},[128,8702,212],{"class":137},[128,8704,8705],{"class":566},"\"韩信\"",[128,8707,222],{"class":137},[128,8709,5784],{"class":468},[128,8711,1519],{"class":137},[128,8713,8714,8716,8719,8721,8724,8726,8729],{"class":130,"line":1702},[128,8715,3108],{"class":137},[128,8717,8718],{"class":144},"p3",[128,8720,212],{"class":137},[128,8722,8723],{"class":566},"\"妲己\"",[128,8725,222],{"class":137},[128,8727,8728],{"class":468},"18",[128,8730,1519],{"class":137},[128,8732,8733,8735,8738,8740,8743,8745,8748],{"class":130,"line":1707},[128,8734,3108],{"class":137},[128,8736,8737],{"class":144},"p4",[128,8739,212],{"class":137},[128,8741,8742],{"class":566},"\"王昭君\"",[128,8744,222],{"class":137},[128,8746,8747],{"class":468},"15",[128,8749,1519],{"class":137},[128,8751,8752,8754,8757,8759,8762,8764,8767],{"class":130,"line":1716},[128,8753,3108],{"class":137},[128,8755,8756],{"class":144},"p5",[128,8758,212],{"class":137},[128,8760,8761],{"class":566},"\"赵云\"",[128,8763,222],{"class":137},[128,8765,8766],{"class":468},"24",[128,8768,1519],{"class":137},[128,8770,8771],{"class":130,"line":3105},[128,8772,194],{"emptyLinePlaceholder":193},[128,8774,8775],{"class":130,"line":3125},[128,8776,8777],{"class":199},"    \u002F\u002F插入数据\n",[128,8779,8780,8783,8785],{"class":130,"line":3142},[128,8781,8782],{"class":137},"    pArray.",[128,8784,8267],{"class":144},[128,8786,8787],{"class":137},"(p1);\n",[128,8789,8790,8792,8794],{"class":130,"line":3148},[128,8791,8782],{"class":137},[128,8793,8267],{"class":144},[128,8795,8796],{"class":137},"(p2);\n",[128,8798,8799,8801,8803],{"class":130,"line":3154},[128,8800,8782],{"class":137},[128,8802,8267],{"class":144},[128,8804,8805],{"class":137},"(p3);\n",[128,8807,8808,8810,8812],{"class":130,"line":3168},[128,8809,8782],{"class":137},[128,8811,8267],{"class":144},[128,8813,8814],{"class":137},"(p4);\n",[128,8816,8817,8819,8821],{"class":130,"line":3175},[128,8818,8782],{"class":137},[128,8820,8267],{"class":144},[128,8822,8823],{"class":137},"(p5);\n",[128,8825,8826],{"class":130,"line":3180},[128,8827,194],{"emptyLinePlaceholder":193},[128,8829,8830,8833],{"class":130,"line":3194},[128,8831,8832],{"class":144},"    printPersonArray",[128,8834,8835],{"class":137},"(pArray);\n",[128,8837,8838],{"class":130,"line":3199},[128,8839,194],{"emptyLinePlaceholder":193},[128,8841,8842,8844,8846,8849,8851,8854,8856,8858,8860],{"class":130,"line":3204},[128,8843,560],{"class":137},[128,8845,563],{"class":134},[128,8847,8848],{"class":566}," \"pArray的大小：\"",[128,8850,570],{"class":134},[128,8852,8853],{"class":137}," pArray.",[128,8855,8154],{"class":144},[128,8857,4747],{"class":137},[128,8859,563],{"class":134},[128,8861,577],{"class":137},[128,8863,8864,8866,8868,8871,8873,8875,8877,8879,8881],{"class":130,"line":3209},[128,8865,560],{"class":137},[128,8867,563],{"class":134},[128,8869,8870],{"class":566}," \"pArray的容量：\"",[128,8872,570],{"class":134},[128,8874,8853],{"class":137},[128,8876,8333],{"class":144},[128,8878,4747],{"class":137},[128,8880,563],{"class":134},[128,8882,577],{"class":137},[128,8884,8885],{"class":130,"line":3223},[128,8886,194],{"emptyLinePlaceholder":193},[128,8888,8889],{"class":130,"line":3228},[128,8890,273],{"class":137},[128,8892,8893],{"class":130,"line":3233},[128,8894,194],{"emptyLinePlaceholder":193},[128,8896,8897,8899,8901],{"class":130,"line":3238},[128,8898,546],{"class":134},[128,8900,618],{"class":144},[128,8902,621],{"class":137},[128,8904,8905],{"class":130,"line":3247},[128,8906,194],{"emptyLinePlaceholder":193},[128,8908,8909],{"class":130,"line":3252},[128,8910,7093],{"class":199},[128,8912,8913],{"class":130,"line":3259},[128,8914,194],{"emptyLinePlaceholder":193},[128,8916,8917,8919],{"class":130,"line":3264},[128,8918,994],{"class":144},[128,8920,635],{"class":137},[128,8922,8923],{"class":130,"line":3271},[128,8924,194],{"emptyLinePlaceholder":193},[128,8926,8927],{"class":130,"line":3276},[128,8928,194],{"emptyLinePlaceholder":193},[128,8930,8931,8933,8935],{"class":130,"line":3281},[128,8932,651],{"class":134},[128,8934,654],{"class":468},[128,8936,472],{"class":137},[128,8938,8939],{"class":130,"line":3290},[128,8940,273],{"class":137},[18,8942,8943,8945,8946,8949,8950,8952],{},[22,8944,159],{}," 该代码块依赖同一案例中的 ",[125,8947,8948],{},"myArray.hpp","，不能单独编译；补齐头文件后，运行结果由 ",[125,8951,163],{}," 中的数组打印逻辑产生。",[18,8954,676],{},[18,8956,8957],{},"can implement a generic array using the knowledge points learned.",[8959,8960,8961],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":123,"searchDepth":151,"depth":151,"links":8963},[8964],{"id":5,"depth":151,"text":5,"children":8965},[8966,8967,8968],{"id":15,"depth":203,"text":16},{"id":73,"depth":203,"text":74},{"id":3315,"depth":203,"text":3316},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban",0,"1700","2023-10-05","wiki\u002F2023-10-05-cplusplus-jiao-xue","en-us:2023-10-05-cplusplus-jiao-xue","\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板",false,null,"en-US","en-us",{},{"title":5,"description":123},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","-YW8S6bId-FyJeRdKCjsBYOscmq1Zs8BBKGMwSGjsH4",[8989,8994,8999,9004,9009,9014,9019,9024,9029,9034,9038,9043,9048,9053,9058,9063,9068,9073,9078,9083,9088,9093,9098,9099,9104,9109,9114,9119,9124,9129,9134,9139,9144,9149,9154,9159,9164,9169,9174,9179,9183,9188,9193,9198,9203,9208,9213,9218,9223,9228,9233,9238,9243,9248,9253,9258,9263,9268,9273,9278,9283,9288,9293,9298,9303,9308,9313,9318,9323,9328,9333,9338,9343,9348,9353,9358,9363,9368,9373,9378,9383,9388],{"path":8990,"stem":8991,"title":8992,"date":8972,"chapterOrder":8993,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++ Development Environment Setup and Testing","0100",{"path":8995,"stem":8996,"title":8997,"date":8972,"chapterOrder":8998,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++ Basics","0200",{"path":9000,"stem":9001,"title":9002,"date":8972,"chapterOrder":9003,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","Data Types and Data Storage","0300",{"path":9005,"stem":9006,"title":9007,"date":8972,"chapterOrder":9008,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","Input and Output","0400",{"path":9010,"stem":9011,"title":9012,"date":8972,"chapterOrder":9013,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","operator","0500",{"path":9015,"stem":9016,"title":9017,"date":8972,"chapterOrder":9018,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","program flow structure","0600",{"path":9020,"stem":9021,"title":9022,"date":8972,"chapterOrder":9023,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","array","0700",{"path":9025,"stem":9026,"title":9027,"date":8972,"chapterOrder":9028,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","Functions and Header Files","0800",{"path":9030,"stem":9031,"title":9032,"date":8972,"chapterOrder":9033,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","pointer","0900",{"path":9035,"stem":9036,"title":9037,"date":8972,"chapterOrder":3888,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","Structures and Unions",{"path":9039,"stem":9040,"title":9041,"date":8972,"chapterOrder":9042,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","Memory Partitioning and Lifecycle","1100",{"path":9044,"stem":9045,"title":9046,"date":8972,"chapterOrder":9047,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","reference","1200",{"path":9049,"stem":9050,"title":9051,"date":8972,"chapterOrder":9052,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","Advanced Functions and Namespaces","1300",{"path":9054,"stem":9055,"title":9056,"date":8972,"chapterOrder":9057,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","encapsulation","1400-0100",{"path":9059,"stem":9060,"title":9061,"date":8972,"chapterOrder":9062,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","Object initialization and cleanup","1400-0200",{"path":9064,"stem":9065,"title":9066,"date":8972,"chapterOrder":9067,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","Object Model and the `this` Pointer","1400-0300",{"path":9069,"stem":9070,"title":9071,"date":8972,"chapterOrder":9072,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","Friends and operator overloading","1400-0400",{"path":9074,"stem":9075,"title":9076,"date":8972,"chapterOrder":9077,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","inheritance","1400-0500",{"path":9079,"stem":9080,"title":9081,"date":8972,"chapterOrder":9082,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","polymorphism","1400-0600",{"path":9084,"stem":9085,"title":9086,"date":8972,"chapterOrder":9087,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","Classes and Objects","1400",{"path":9089,"stem":9090,"title":9091,"date":8972,"chapterOrder":9092,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","File operations","1500",{"path":9094,"stem":9095,"title":9096,"date":8972,"chapterOrder":9097,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":8969,"stem":8986,"title":5,"date":8972,"chapterOrder":8971,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},{"path":9100,"stem":9101,"title":9102,"date":8972,"chapterOrder":9103,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","Introduction to STL","1800-0100",{"path":9105,"stem":9106,"title":9107,"date":8972,"chapterOrder":9108,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":9110,"stem":9111,"title":9112,"date":8972,"chapterOrder":9113,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string container","1800-0300",{"path":9115,"stem":9116,"title":9117,"date":8972,"chapterOrder":9118,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":9120,"stem":9121,"title":9122,"date":8972,"chapterOrder":9123,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":9125,"stem":9126,"title":9127,"date":8972,"chapterOrder":9128,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":9130,"stem":9131,"title":9132,"date":8972,"chapterOrder":9133,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue container","1800-0700",{"path":9135,"stem":9136,"title":9137,"date":8972,"chapterOrder":9138,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":9140,"stem":9141,"title":9142,"date":8972,"chapterOrder":9143,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":9145,"stem":9146,"title":9147,"date":8972,"chapterOrder":9148,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":9150,"stem":9151,"title":9152,"date":8972,"chapterOrder":9153,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","Function objects and predicates","1800-1100",{"path":9155,"stem":9156,"title":9157,"date":8972,"chapterOrder":9158,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","Common algorithms","1800-1200",{"path":9160,"stem":9161,"title":9162,"date":8972,"chapterOrder":9163,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","Level up your programming with STL.","1800",{"path":9165,"stem":9166,"title":9167,"date":8972,"chapterOrder":9168,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++ Type Casting","1900",{"path":9170,"stem":9171,"title":9172,"date":8972,"chapterOrder":9173,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto","2000-0100",{"path":9175,"stem":9176,"title":9177,"date":8972,"chapterOrder":9178,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":9180,"stem":9181,"title":2637,"date":8972,"chapterOrder":9182,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","2000-0300",{"path":9184,"stem":9185,"title":9186,"date":8972,"chapterOrder":9187,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":9189,"stem":9190,"title":9191,"date":8972,"chapterOrder":9192,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","range-based for loop","2000-0500",{"path":9194,"stem":9195,"title":9196,"date":8972,"chapterOrder":9197,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","structured binding","2000-0600",{"path":9199,"stem":9200,"title":9201,"date":8972,"chapterOrder":9202,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":9204,"stem":9205,"title":9206,"date":8972,"chapterOrder":9207,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":9209,"stem":9210,"title":9211,"date":8972,"chapterOrder":9212,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","Smart pointer","2000-0900",{"path":9214,"stem":9215,"title":9216,"date":8972,"chapterOrder":9217,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","Rvalue references and move semantics","2000-1000",{"path":9219,"stem":9220,"title":9221,"date":8972,"chapterOrder":9222,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda expression","2000-1100",{"path":9224,"stem":9225,"title":9226,"date":8972,"chapterOrder":9227,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":9229,"stem":9230,"title":9231,"date":8972,"chapterOrder":9232,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":9234,"stem":9235,"title":9236,"date":8972,"chapterOrder":9237,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":9239,"stem":9240,"title":9241,"date":8972,"chapterOrder":9242,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":9244,"stem":9245,"title":9246,"date":8972,"chapterOrder":9247,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":9249,"stem":9250,"title":9251,"date":8972,"chapterOrder":9252,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":9254,"stem":9255,"title":9256,"date":8972,"chapterOrder":9257,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":9259,"stem":9260,"title":9261,"date":8972,"chapterOrder":9262,"chapterDepth":151,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread and join","2000-1900-0100",{"path":9264,"stem":9265,"title":9266,"date":8972,"chapterOrder":9267,"chapterDepth":151,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 与 lock_guard","2000-1900-0200",{"path":9269,"stem":9270,"title":9271,"date":8972,"chapterOrder":9272,"chapterDepth":151,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":9274,"stem":9275,"title":9276,"date":8972,"chapterOrder":9277,"chapterDepth":151,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":9279,"stem":9280,"title":9281,"date":8972,"chapterOrder":9282,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","Concurrent programming","2000-1900",{"path":9284,"stem":9285,"title":9286,"date":8972,"chapterOrder":9287,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":9289,"stem":9290,"title":9291,"date":8972,"chapterOrder":9292,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","Modules Introduction","2000-2100",{"path":9294,"stem":9295,"title":9296,"date":8972,"chapterOrder":9297,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","Modern C++","2000",{"path":9299,"stem":9300,"title":9301,"date":8972,"chapterOrder":9302,"chapterDepth":151,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","Timers and Asynchronous I\u002FO","2100-0100-0100",{"path":9304,"stem":9305,"title":9306,"date":8972,"chapterOrder":9307,"chapterDepth":151,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio Basics","2100-0100-0200",{"path":9309,"stem":9310,"title":9311,"date":8972,"chapterOrder":9312,"chapterDepth":151,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","serial communication","2100-0100-0300",{"path":9314,"stem":9315,"title":9316,"date":8972,"chapterOrder":9317,"chapterDepth":151,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP communication","2100-0100-0400",{"path":9319,"stem":9320,"title":9321,"date":8972,"chapterOrder":9322,"chapterDepth":151,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP communication","2100-0100-0500",{"path":9324,"stem":9325,"title":9326,"date":8972,"chapterOrder":9327,"chapterDepth":151,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","Robot Engineering Approach and ROS2 Integration","2100-0100-0600",{"path":9329,"stem":9330,"title":9331,"date":8972,"chapterOrder":9332,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio asynchronous IO library","2100-0100",{"path":9334,"stem":9335,"title":9336,"date":8972,"chapterOrder":9337,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen linear algebra library","2100-0200",{"path":9339,"stem":9340,"title":9341,"date":8972,"chapterOrder":9342,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV Computer Vision Library","2100-0300",{"path":9344,"stem":9345,"title":9346,"date":8972,"chapterOrder":9347,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL Point Cloud Library","2100-0400",{"path":9349,"stem":9350,"title":9351,"date":8972,"chapterOrder":9352,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus Lie group and Lie algebra library","2100-0500",{"path":9354,"stem":9355,"title":9356,"date":8972,"chapterOrder":9357,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","Learning Common Libraries","2100",{"path":9359,"stem":9360,"title":9361,"date":8972,"chapterOrder":9362,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets and Build Installation","2200-0100",{"path":9364,"stem":9365,"title":9366,"date":8972,"chapterOrder":9367,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","Top-level CMake and Public Compilation Options","2200-0200",{"path":9369,"stem":9370,"title":9371,"date":8972,"chapterOrder":9372,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","Detailed CMake Explanation for src and lib Modules","2200-0300",{"path":9374,"stem":9375,"title":9376,"date":8972,"chapterOrder":9377,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","How to write third-party library dependencies","2200-0400",{"path":9379,"stem":9380,"title":9381,"date":8972,"chapterOrder":9382,"chapterDepth":131,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","Template Extensions and FAQ","2200-0500",{"path":9384,"stem":9385,"title":9386,"date":8972,"chapterOrder":9387,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":8979},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake Project Template","2200",{"path":8975,"stem":9389,"title":9390,"date":8972,"chapterOrder":8980,"chapterDepth":8970,"docKey":8974,"docRoot":8975,"docTitle":8976,"isWikiDoc":193,"isWikiIndex":193},"_i18n\u002Fen-us\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++ tutorial",{"variants":9392},[9393,9394,9397,9400,9403],{"path":8969,"localeSlug":8982,"i18nKey":8978},{"path":9395,"localeSlug":9396,"i18nKey":8978},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","zh-hant",{"path":9398,"localeSlug":9399,"i18nKey":8978},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","zh-hk",{"path":9401,"localeSlug":9402,"i18nKey":8978},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","zh-tw",{"path":9404,"localeSlug":9405,"i18nKey":8978},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","zh-cn",[8969,8985,9395,8985,9398,8985,9401,8985,9404,8985],1784646864037]