[{"data":1,"prerenderedAt":8893},["ShallowReactive",2],{"wiki-page-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban":3,"wiki-doc-items-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban":8475,"language-switcher-data-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban":8877,"wiki-i18n-paths-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban":8892},{"id":4,"title":5,"body":6,"canonicalPath":8458,"chapter":8244,"chapterSort":8459,"date":8460,"description":111,"docI18nKey":8461,"docKey":8462,"docRoot":8463,"docTitle":8464,"extension":8465,"i18nKey":8466,"isBlogPost":8467,"isWikiDoc":178,"isWikiIndex":8467,"layout":8468,"legacyPath":8469,"locale":8470,"localeSlug":8471,"meta":8472,"navigation":178,"path":8458,"seo":8473,"sourcePath":8469,"sourceStem":8466,"stem":8466,"wikiDepth":119,"__hash__":8474},"content/wiki/2023-10-05-Cplusplus教学/ch15-模板.md","模板",{"type":7,"value":8,"toc":8451},"minimark",[9,12,16,28,31,34,41,44,50,56,59,69,72,86,90,93,100,105,144,150,155,158,161,164,169,647,652,655,666,669,672,680,684,992,996,998,1003,1006,1009,1034,1036,1692,1697,1700,1703,1708,1719,1723,1990,1994,1997,2000,2003,2018,2022,2401,2405,2408,2411,2416,2421,2426,2484,2488,2491,2494,2551,2556,2559,2569,2573,3246,3250,3252,3260,3262,3265,3268,3275,3279,3301,3305,3309,3311,3313,3315,3319,3590,3594,3597,3600,3603,3611,3615,3954,3958,3960,3968,3971,3974,3982,3986,4280,4284,4287,4290,4293,4298,4301,4312,4316,4935,4939,4941,4949,4952,4955,4966,4970,5269,5273,5276,5279,5282,5286,5637,5641,5644,5647,5649,5654,5657,5662,5665,5673,5677,5680,5938,5942,5945,6089,6093,6096,6099,6101,6106,6109,6112,6116,6637,6641,6644,6647,6650,6673,6677,6680,7575,7579,7582,8438,8442,8444,8447],[10,11,5],"h2",{"id":5},[13,14,15],"h3",{"id":15},"模板的概念",[17,18,19,20,24,25],"p",{},"模板就是建立",[21,22,23],"strong",{},"通用的模具","，大大",[21,26,27],{},"提高复用性",[17,29,30],{},"例如生活中的模板",[17,32,33],{},"一寸照片模板：",[17,35,36],{},[37,38],"img",{"alt":39,"src":40},"1547105026929","https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/10/05/stage5-1547105026929-05f23198cb.webp",[17,42,43],{},"PPT模板：",[17,45,46],{},[37,47],{"alt":48,"src":49},"1547103297864","https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/10/05/stage5-1547103297864-abb466b989.webp",[17,51,52],{},[37,53],{"alt":54,"src":55},"1547103359158","https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/10/05/stage5-1547103359158-05f932a647.webp",[17,57,58],{},"模板的特点：",[60,61,62,66],"ul",{},[63,64,65],"li",{},"模板不可以直接使用，它只是一个框架",[63,67,68],{},"模板的通用并不是万能的",[13,70,71],{"id":71},"函数模板",[60,73,74,77],{},[63,75,76],{},"C++另一种编程思想称为 ==泛型编程== ，主要利用的技术就是模板",[63,78,79,80,82,83],{},"C++提供两种模板机制:",[21,81,71],{},"和",[21,84,85],{},"类模板",[87,88,89],"h4",{"id":89},"函数模板语法",[17,91,92],{},"函数模板作用：",[17,94,95,96,99],{},"建立一个通用函数，其函数返回值类型和形参类型可以不具体制定，用一个",[21,97,98],{},"虚拟的类型","来代表。",[17,101,102],{},[21,103,104],{},"语法：",[106,107,112],"pre",{"className":108,"code":109,"language":110,"meta":111,"style":111},"language-cpp shiki shiki-themes github-light github-dark","template\u003Ctypename T>\n函数声明或定义\n","cpp","",[113,114,115,138],"code",{"__ignoreMap":111},[116,117,120,124,128,131,135],"span",{"class":118,"line":119},"line",1,[116,121,123],{"class":122},"szBVR","template",[116,125,127],{"class":126},"sVt8B","\u003C",[116,129,130],{"class":122},"typename",[116,132,134],{"class":133},"sScJk"," T",[116,136,137],{"class":126},">\n",[116,139,141],{"class":118,"line":140},2,[116,142,143],{"class":126},"函数声明或定义\n",[17,145,146,149],{},[21,147,148],{},"运行/观察结果："," 这段偏语法定义，通常需要配合调用代码一起编译，重点看定义方式和使用位置。",[17,151,152],{},[21,153,154],{},"解释：",[17,156,157],{},"template  ---  声明创建模板",[17,159,160],{},"typename  --- 表面其后面的符号是一种数据类型，可以用class代替",[17,162,163],{},"T    ---   通用的数据类型，名称可以替换，通常为大写字母",[17,165,166],{},[21,167,168],{},"示例：",[106,170,172],{"className":108,"code":171,"language":110,"meta":111,"style":111},"\n//交换整型函数\nvoid swapInt(int& a, int& b) {\n    int temp = a;\n    a = b;\n    b = temp;\n}\n\n//交换浮点型函数\nvoid swapDouble(double& a, double& b) {\n    double temp = a;\n    a = b;\n    b = temp;\n}\n\n//利用模板提供通用的交换函数\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    //swapInt(a, b);\n\n    //利用模板实现交换\n    //1、自动类型推导\n    mySwap(a, b);\n\n    //2、显示指定类型\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",[113,173,174,180,186,216,231,242,253,259,264,270,293,305,314,323,328,333,339,352,381,387,397,406,415,420,425,436,441,458,473,479,485,490,496,502,511,516,522,535,540,563,581,586,591,596,607,612,621,626,631,642],{"__ignoreMap":111},[116,175,176],{"class":118,"line":119},[116,177,179],{"emptyLinePlaceholder":178},true,"\n",[116,181,182],{"class":118,"line":140},[116,183,185],{"class":184},"sJ8bj","//交换整型函数\n",[116,187,189,192,195,198,201,205,208,210,213],{"class":118,"line":188},3,[116,190,191],{"class":122},"void",[116,193,194],{"class":133}," swapInt",[116,196,197],{"class":126},"(",[116,199,200],{"class":122},"int&",[116,202,204],{"class":203},"s4XuR"," a",[116,206,207],{"class":126},", ",[116,209,200],{"class":122},[116,211,212],{"class":203}," b",[116,214,215],{"class":126},") {\n",[116,217,219,222,225,228],{"class":118,"line":218},4,[116,220,221],{"class":122},"    int",[116,223,224],{"class":126}," temp ",[116,226,227],{"class":122},"=",[116,229,230],{"class":126}," a;\n",[116,232,234,237,239],{"class":118,"line":233},5,[116,235,236],{"class":126},"    a ",[116,238,227],{"class":122},[116,240,241],{"class":126}," b;\n",[116,243,245,248,250],{"class":118,"line":244},6,[116,246,247],{"class":126},"    b ",[116,249,227],{"class":122},[116,251,252],{"class":126}," temp;\n",[116,254,256],{"class":118,"line":255},7,[116,257,258],{"class":126},"}\n",[116,260,262],{"class":118,"line":261},8,[116,263,179],{"emptyLinePlaceholder":178},[116,265,267],{"class":118,"line":266},9,[116,268,269],{"class":184},"//交换浮点型函数\n",[116,271,273,275,278,280,283,285,287,289,291],{"class":118,"line":272},10,[116,274,191],{"class":122},[116,276,277],{"class":133}," swapDouble",[116,279,197],{"class":126},[116,281,282],{"class":122},"double&",[116,284,204],{"class":203},[116,286,207],{"class":126},[116,288,282],{"class":122},[116,290,212],{"class":203},[116,292,215],{"class":126},[116,294,296,299,301,303],{"class":118,"line":295},11,[116,297,298],{"class":122},"    double",[116,300,224],{"class":126},[116,302,227],{"class":122},[116,304,230],{"class":126},[116,306,308,310,312],{"class":118,"line":307},12,[116,309,236],{"class":126},[116,311,227],{"class":122},[116,313,241],{"class":126},[116,315,317,319,321],{"class":118,"line":316},13,[116,318,247],{"class":126},[116,320,227],{"class":122},[116,322,252],{"class":126},[116,324,326],{"class":118,"line":325},14,[116,327,258],{"class":126},[116,329,331],{"class":118,"line":330},15,[116,332,179],{"emptyLinePlaceholder":178},[116,334,336],{"class":118,"line":335},16,[116,337,338],{"class":184},"//利用模板提供通用的交换函数\n",[116,340,342,344,346,348,350],{"class":118,"line":341},17,[116,343,123],{"class":122},[116,345,127],{"class":126},[116,347,130],{"class":122},[116,349,134],{"class":133},[116,351,137],{"class":126},[116,353,355,357,360,362,365,368,370,372,374,376,378],{"class":118,"line":354},18,[116,356,191],{"class":122},[116,358,359],{"class":133}," mySwap",[116,361,197],{"class":126},[116,363,364],{"class":133},"T",[116,366,367],{"class":122},"&",[116,369,204],{"class":203},[116,371,207],{"class":126},[116,373,364],{"class":133},[116,375,367],{"class":122},[116,377,212],{"class":203},[116,379,380],{"class":126},")\n",[116,382,384],{"class":118,"line":383},19,[116,385,386],{"class":126},"{\n",[116,388,390,393,395],{"class":118,"line":389},20,[116,391,392],{"class":126},"    T temp ",[116,394,227],{"class":122},[116,396,230],{"class":126},[116,398,400,402,404],{"class":118,"line":399},21,[116,401,236],{"class":126},[116,403,227],{"class":122},[116,405,241],{"class":126},[116,407,409,411,413],{"class":118,"line":408},22,[116,410,247],{"class":126},[116,412,227],{"class":122},[116,414,252],{"class":126},[116,416,418],{"class":118,"line":417},23,[116,419,258],{"class":126},[116,421,423],{"class":118,"line":422},24,[116,424,179],{"emptyLinePlaceholder":178},[116,426,428,430,433],{"class":118,"line":427},25,[116,429,191],{"class":122},[116,431,432],{"class":133}," test01",[116,434,435],{"class":126},"()\n",[116,437,439],{"class":118,"line":438},26,[116,440,386],{"class":126},[116,442,444,446,449,451,455],{"class":118,"line":443},27,[116,445,221],{"class":122},[116,447,448],{"class":126}," a ",[116,450,227],{"class":122},[116,452,454],{"class":453},"sj4cs"," 10",[116,456,457],{"class":126},";\n",[116,459,461,463,466,468,471],{"class":118,"line":460},28,[116,462,221],{"class":122},[116,464,465],{"class":126}," b ",[116,467,227],{"class":122},[116,469,470],{"class":453}," 20",[116,472,457],{"class":126},[116,474,476],{"class":118,"line":475},29,[116,477,478],{"class":126},"    \n",[116,480,482],{"class":118,"line":481},30,[116,483,484],{"class":184},"    //swapInt(a, b);\n",[116,486,488],{"class":118,"line":487},31,[116,489,179],{"emptyLinePlaceholder":178},[116,491,493],{"class":118,"line":492},32,[116,494,495],{"class":184},"    //利用模板实现交换\n",[116,497,499],{"class":118,"line":498},33,[116,500,501],{"class":184},"    //1、自动类型推导\n",[116,503,505,508],{"class":118,"line":504},34,[116,506,507],{"class":133},"    mySwap",[116,509,510],{"class":126},"(a, b);\n",[116,512,514],{"class":118,"line":513},35,[116,515,179],{"emptyLinePlaceholder":178},[116,517,519],{"class":118,"line":518},36,[116,520,521],{"class":184},"    //2、显示指定类型\n",[116,523,525,527,529,532],{"class":118,"line":524},37,[116,526,507],{"class":133},[116,528,127],{"class":126},[116,530,531],{"class":122},"int",[116,533,534],{"class":126},">(a, b);\n",[116,536,538],{"class":118,"line":537},38,[116,539,179],{"emptyLinePlaceholder":178},[116,541,543,546,549,553,556,558,560],{"class":118,"line":542},39,[116,544,545],{"class":126},"    cout ",[116,547,548],{"class":122},"\u003C\u003C",[116,550,552],{"class":551},"sZZnC"," \"a = \"",[116,554,555],{"class":122}," \u003C\u003C",[116,557,448],{"class":126},[116,559,548],{"class":122},[116,561,562],{"class":126}," endl;\n",[116,564,566,568,570,573,575,577,579],{"class":118,"line":565},40,[116,567,545],{"class":126},[116,569,548],{"class":122},[116,571,572],{"class":551}," \"b = \"",[116,574,555],{"class":122},[116,576,465],{"class":126},[116,578,548],{"class":122},[116,580,562],{"class":126},[116,582,584],{"class":118,"line":583},41,[116,585,179],{"emptyLinePlaceholder":178},[116,587,589],{"class":118,"line":588},42,[116,590,258],{"class":126},[116,592,594],{"class":118,"line":593},43,[116,595,179],{"emptyLinePlaceholder":178},[116,597,599,601,604],{"class":118,"line":598},44,[116,600,531],{"class":122},[116,602,603],{"class":133}," main",[116,605,606],{"class":126},"() {\n",[116,608,610],{"class":118,"line":609},45,[116,611,179],{"emptyLinePlaceholder":178},[116,613,615,618],{"class":118,"line":614},46,[116,616,617],{"class":133},"    test01",[116,619,620],{"class":126},"();\n",[116,622,624],{"class":118,"line":623},47,[116,625,179],{"emptyLinePlaceholder":178},[116,627,629],{"class":118,"line":628},48,[116,630,179],{"emptyLinePlaceholder":178},[116,632,634,637,640],{"class":118,"line":633},49,[116,635,636],{"class":122},"    return",[116,638,639],{"class":453}," 0",[116,641,457],{"class":126},[116,643,645],{"class":118,"line":644},50,[116,646,258],{"class":126},[17,648,649,651],{},[21,650,148],{}," 运行后会按输出语句打印对应内容，变量值可结合初始化、赋值和函数调用顺序推导。",[17,653,654],{},"总结：",[60,656,657,660,663],{},[63,658,659],{},"函数模板利用关键字 template",[63,661,662],{},"使用函数模板有两种方式：自动类型推导、显示指定类型",[63,664,665],{},"模板的目的是为了提高复用性，将类型参数化",[87,667,668],{"id":668},"函数模板注意事项",[17,670,671],{},"注意事项：",[60,673,674,677],{},[63,675,676],{},"自动类型推导，必须推导出一致的数据类型T,才可以使用",[63,678,679],{},"模板必须要确定出T的数据类型，才可以使用",[17,681,682],{},[21,683,168],{},[106,685,687],{"className":108,"code":686,"language":110,"meta":111,"style":111},"//利用模板提供通用的交换函数\ntemplate\u003Cclass T>\nvoid mySwap(T& a, T& b)\n{\n    T temp = a;\n    a = b;\n    b = temp;\n}\n\n// 1、自动类型推导，必须推导出一致的数据类型T,才可以使用\nvoid test01()\n{\n    int a = 10;\n    int b = 20;\n    char c = 'c';\n\n    mySwap(a, b); // 正确，可以推导出一致的T\n    //mySwap(a, c); // 错误，推导不出一致的T类型\n}\n\n// 2、模板必须要确定出T的数据类型，才可以使用\ntemplate\u003Cclass T>\nvoid func()\n{\n    cout \u003C\u003C \"func 调用\" \u003C\u003C endl;\n}\n\nvoid test02()\n{\n    //func(); //错误，模板不能独立使用，必须确定出T的类型\n    func\u003Cint>(); //利用显示指定类型的方式，给T一个类型，才可以使用该模板\n}\n\nint main() {\n\n    test01();\n    test02();\n\n\n    return 0;\n}\n",[113,688,689,693,706,730,734,742,750,758,762,766,771,779,783,795,807,822,826,836,844,848,852,857,869,878,882,895,899,903,912,916,924,939,943,947,955,959,965,972,976,980,988],{"__ignoreMap":111},[116,690,691],{"class":118,"line":119},[116,692,338],{"class":184},[116,694,695,697,699,702,704],{"class":118,"line":140},[116,696,123],{"class":122},[116,698,127],{"class":126},[116,700,701],{"class":122},"class",[116,703,134],{"class":133},[116,705,137],{"class":126},[116,707,708,710,712,714,716,718,720,722,724,726,728],{"class":118,"line":188},[116,709,191],{"class":122},[116,711,359],{"class":133},[116,713,197],{"class":126},[116,715,364],{"class":133},[116,717,367],{"class":122},[116,719,204],{"class":203},[116,721,207],{"class":126},[116,723,364],{"class":133},[116,725,367],{"class":122},[116,727,212],{"class":203},[116,729,380],{"class":126},[116,731,732],{"class":118,"line":218},[116,733,386],{"class":126},[116,735,736,738,740],{"class":118,"line":233},[116,737,392],{"class":126},[116,739,227],{"class":122},[116,741,230],{"class":126},[116,743,744,746,748],{"class":118,"line":244},[116,745,236],{"class":126},[116,747,227],{"class":122},[116,749,241],{"class":126},[116,751,752,754,756],{"class":118,"line":255},[116,753,247],{"class":126},[116,755,227],{"class":122},[116,757,252],{"class":126},[116,759,760],{"class":118,"line":261},[116,761,258],{"class":126},[116,763,764],{"class":118,"line":266},[116,765,179],{"emptyLinePlaceholder":178},[116,767,768],{"class":118,"line":272},[116,769,770],{"class":184},"// 1、自动类型推导，必须推导出一致的数据类型T,才可以使用\n",[116,772,773,775,777],{"class":118,"line":295},[116,774,191],{"class":122},[116,776,432],{"class":133},[116,778,435],{"class":126},[116,780,781],{"class":118,"line":307},[116,782,386],{"class":126},[116,784,785,787,789,791,793],{"class":118,"line":316},[116,786,221],{"class":122},[116,788,448],{"class":126},[116,790,227],{"class":122},[116,792,454],{"class":453},[116,794,457],{"class":126},[116,796,797,799,801,803,805],{"class":118,"line":325},[116,798,221],{"class":122},[116,800,465],{"class":126},[116,802,227],{"class":122},[116,804,470],{"class":453},[116,806,457],{"class":126},[116,808,809,812,815,817,820],{"class":118,"line":330},[116,810,811],{"class":122},"    char",[116,813,814],{"class":126}," c ",[116,816,227],{"class":122},[116,818,819],{"class":551}," 'c'",[116,821,457],{"class":126},[116,823,824],{"class":118,"line":335},[116,825,179],{"emptyLinePlaceholder":178},[116,827,828,830,833],{"class":118,"line":341},[116,829,507],{"class":133},[116,831,832],{"class":126},"(a, b);",[116,834,835],{"class":184}," // 正确，可以推导出一致的T\n",[116,837,838,841],{"class":118,"line":354},[116,839,840],{"class":184},"    //mySwap(a, c);",[116,842,843],{"class":184}," // 错误，推导不出一致的T类型\n",[116,845,846],{"class":118,"line":383},[116,847,258],{"class":126},[116,849,850],{"class":118,"line":389},[116,851,179],{"emptyLinePlaceholder":178},[116,853,854],{"class":118,"line":399},[116,855,856],{"class":184},"// 2、模板必须要确定出T的数据类型，才可以使用\n",[116,858,859,861,863,865,867],{"class":118,"line":408},[116,860,123],{"class":122},[116,862,127],{"class":126},[116,864,701],{"class":122},[116,866,134],{"class":133},[116,868,137],{"class":126},[116,870,871,873,876],{"class":118,"line":417},[116,872,191],{"class":122},[116,874,875],{"class":133}," func",[116,877,435],{"class":126},[116,879,880],{"class":118,"line":422},[116,881,386],{"class":126},[116,883,884,886,888,891,893],{"class":118,"line":427},[116,885,545],{"class":126},[116,887,548],{"class":122},[116,889,890],{"class":551}," \"func 调用\"",[116,892,555],{"class":122},[116,894,562],{"class":126},[116,896,897],{"class":118,"line":438},[116,898,258],{"class":126},[116,900,901],{"class":118,"line":443},[116,902,179],{"emptyLinePlaceholder":178},[116,904,905,907,910],{"class":118,"line":460},[116,906,191],{"class":122},[116,908,909],{"class":133}," test02",[116,911,435],{"class":126},[116,913,914],{"class":118,"line":475},[116,915,386],{"class":126},[116,917,918,921],{"class":118,"line":481},[116,919,920],{"class":184},"    //func();",[116,922,923],{"class":184}," //错误，模板不能独立使用，必须确定出T的类型\n",[116,925,926,929,931,933,936],{"class":118,"line":487},[116,927,928],{"class":133},"    func",[116,930,127],{"class":126},[116,932,531],{"class":122},[116,934,935],{"class":126},">();",[116,937,938],{"class":184}," //利用显示指定类型的方式，给T一个类型，才可以使用该模板\n",[116,940,941],{"class":118,"line":492},[116,942,258],{"class":126},[116,944,945],{"class":118,"line":498},[116,946,179],{"emptyLinePlaceholder":178},[116,948,949,951,953],{"class":118,"line":504},[116,950,531],{"class":122},[116,952,603],{"class":133},[116,954,606],{"class":126},[116,956,957],{"class":118,"line":513},[116,958,179],{"emptyLinePlaceholder":178},[116,960,961,963],{"class":118,"line":518},[116,962,617],{"class":133},[116,964,620],{"class":126},[116,966,967,970],{"class":118,"line":524},[116,968,969],{"class":133},"    test02",[116,971,620],{"class":126},[116,973,974],{"class":118,"line":537},[116,975,179],{"emptyLinePlaceholder":178},[116,977,978],{"class":118,"line":542},[116,979,179],{"emptyLinePlaceholder":178},[116,981,982,984,986],{"class":118,"line":565},[116,983,636],{"class":122},[116,985,639],{"class":453},[116,987,457],{"class":126},[116,989,990],{"class":118,"line":583},[116,991,258],{"class":126},[17,993,994,651],{},[21,995,148],{},[17,997,654],{},[60,999,1000],{},[63,1001,1002],{},"使用模板时必须确定出通用数据类型T，并且能够推导出一致的类型",[87,1004,1005],{"id":1005},"函数模板案例",[17,1007,1008],{},"案例描述：",[60,1010,1011,1018,1024],{},[63,1012,1013,1014,1017],{},"利用函数模板封装一个排序的函数，可以对",[21,1015,1016],{},"不同数据类型数组","进行排序",[63,1019,1020,1021],{},"排序规则从大到小，排序算法为",[21,1022,1023],{},"选择排序",[63,1025,1026,1027,82,1030,1033],{},"分别利用",[21,1028,1029],{},"char数组",[21,1031,1032],{},"int数组","进行测试",[17,1035,168],{},[106,1037,1039],{"className":108,"code":1038,"language":110,"meta":111,"style":111},"//交换的函数模板\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> // 也可以替换成typename\n//利用选择排序，进行对数组从大到小的排序\nvoid mySort(T arr[], int len)\n{\n    for (int i = 0; i \u003C len; i++)\n    {\n        int max = i; //最大数的下标\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) //如果最大数的下标不是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    //测试char数组\n    char charArr[] = \"bdcfeagh\";\n    int num = sizeof(charArr) / sizeof(char);\n    mySort(charArr, num);\n    printArray(charArr, num);\n}\n\nvoid test02()\n{\n    //测试int数组\n    int intArr[] = { 7, 5, 8, 1, 3, 9, 2, 4, 6 };\n    int num = sizeof(intArr) / 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",[113,1040,1041,1046,1058,1085,1089,1097,1105,1113,1117,1121,1137,1142,1166,1170,1200,1205,1221,1255,1260,1273,1278,1288,1293,1298,1315,1319,1327,1331,1336,1340,1352,1373,1377,1401,1418,1422,1430,1434,1442,1446,1451,1465,1493,1501,1508,1512,1516,1524,1528,1533,1591,1615,1623,1630,1635,1640,1649,1654,1661,1668,1673,1678,1687],{"__ignoreMap":111},[116,1042,1043],{"class":118,"line":119},[116,1044,1045],{"class":184},"//交换的函数模板\n",[116,1047,1048,1050,1052,1054,1056],{"class":118,"line":140},[116,1049,123],{"class":122},[116,1051,127],{"class":126},[116,1053,130],{"class":122},[116,1055,134],{"class":133},[116,1057,137],{"class":126},[116,1059,1060,1062,1064,1066,1068,1071,1074,1076,1078,1080,1083],{"class":118,"line":188},[116,1061,191],{"class":122},[116,1063,359],{"class":133},[116,1065,197],{"class":126},[116,1067,364],{"class":133},[116,1069,1070],{"class":122}," &",[116,1072,1073],{"class":203},"a",[116,1075,207],{"class":126},[116,1077,364],{"class":133},[116,1079,367],{"class":122},[116,1081,1082],{"class":203},"b",[116,1084,380],{"class":126},[116,1086,1087],{"class":118,"line":218},[116,1088,386],{"class":126},[116,1090,1091,1093,1095],{"class":118,"line":233},[116,1092,392],{"class":126},[116,1094,227],{"class":122},[116,1096,230],{"class":126},[116,1098,1099,1101,1103],{"class":118,"line":244},[116,1100,236],{"class":126},[116,1102,227],{"class":122},[116,1104,241],{"class":126},[116,1106,1107,1109,1111],{"class":118,"line":255},[116,1108,247],{"class":126},[116,1110,227],{"class":122},[116,1112,252],{"class":126},[116,1114,1115],{"class":118,"line":261},[116,1116,258],{"class":126},[116,1118,1119],{"class":118,"line":266},[116,1120,179],{"emptyLinePlaceholder":178},[116,1122,1123,1125,1127,1129,1131,1134],{"class":118,"line":272},[116,1124,123],{"class":122},[116,1126,127],{"class":126},[116,1128,701],{"class":122},[116,1130,134],{"class":133},[116,1132,1133],{"class":126},">",[116,1135,1136],{"class":184}," // 也可以替换成typename\n",[116,1138,1139],{"class":118,"line":295},[116,1140,1141],{"class":184},"//利用选择排序，进行对数组从大到小的排序\n",[116,1143,1144,1146,1149,1151,1153,1156,1159,1161,1164],{"class":118,"line":307},[116,1145,191],{"class":122},[116,1147,1148],{"class":133}," mySort",[116,1150,197],{"class":126},[116,1152,364],{"class":133},[116,1154,1155],{"class":203}," arr",[116,1157,1158],{"class":126},"[], ",[116,1160,531],{"class":122},[116,1162,1163],{"class":203}," len",[116,1165,380],{"class":126},[116,1167,1168],{"class":118,"line":316},[116,1169,386],{"class":126},[116,1171,1172,1175,1178,1180,1183,1185,1187,1190,1192,1195,1198],{"class":118,"line":325},[116,1173,1174],{"class":122},"    for",[116,1176,1177],{"class":126}," (",[116,1179,531],{"class":122},[116,1181,1182],{"class":126}," i ",[116,1184,227],{"class":122},[116,1186,639],{"class":453},[116,1188,1189],{"class":126},"; i ",[116,1191,127],{"class":122},[116,1193,1194],{"class":126}," len; i",[116,1196,1197],{"class":122},"++",[116,1199,380],{"class":126},[116,1201,1202],{"class":118,"line":330},[116,1203,1204],{"class":126},"    {\n",[116,1206,1207,1210,1213,1215,1218],{"class":118,"line":335},[116,1208,1209],{"class":122},"        int",[116,1211,1212],{"class":126}," max ",[116,1214,227],{"class":122},[116,1216,1217],{"class":126}," i;",[116,1219,1220],{"class":184}," //最大数的下标\n",[116,1222,1223,1226,1228,1230,1233,1235,1237,1240,1243,1246,1248,1251,1253],{"class":118,"line":341},[116,1224,1225],{"class":122},"        for",[116,1227,1177],{"class":126},[116,1229,531],{"class":122},[116,1231,1232],{"class":126}," j ",[116,1234,227],{"class":122},[116,1236,1182],{"class":126},[116,1238,1239],{"class":122},"+",[116,1241,1242],{"class":453}," 1",[116,1244,1245],{"class":126},"; j ",[116,1247,127],{"class":122},[116,1249,1250],{"class":126}," len; j",[116,1252,1197],{"class":122},[116,1254,380],{"class":126},[116,1256,1257],{"class":118,"line":354},[116,1258,1259],{"class":126},"        {\n",[116,1261,1262,1265,1268,1270],{"class":118,"line":383},[116,1263,1264],{"class":122},"            if",[116,1266,1267],{"class":126}," (arr[max] ",[116,1269,127],{"class":122},[116,1271,1272],{"class":126}," arr[j])\n",[116,1274,1275],{"class":118,"line":389},[116,1276,1277],{"class":126},"            {\n",[116,1279,1280,1283,1285],{"class":118,"line":399},[116,1281,1282],{"class":126},"                max ",[116,1284,227],{"class":122},[116,1286,1287],{"class":126}," j;\n",[116,1289,1290],{"class":118,"line":408},[116,1291,1292],{"class":126},"            }\n",[116,1294,1295],{"class":118,"line":417},[116,1296,1297],{"class":126},"        }\n",[116,1299,1300,1303,1306,1309,1312],{"class":118,"line":422},[116,1301,1302],{"class":122},"        if",[116,1304,1305],{"class":126}," (max ",[116,1307,1308],{"class":122},"!=",[116,1310,1311],{"class":126}," i)",[116,1313,1314],{"class":184}," //如果最大数的下标不是i，交换两者\n",[116,1316,1317],{"class":118,"line":427},[116,1318,1259],{"class":126},[116,1320,1321,1324],{"class":118,"line":438},[116,1322,1323],{"class":133},"            mySwap",[116,1325,1326],{"class":126},"(arr[max], arr[i]);\n",[116,1328,1329],{"class":118,"line":443},[116,1330,1297],{"class":126},[116,1332,1333],{"class":118,"line":460},[116,1334,1335],{"class":126},"    }\n",[116,1337,1338],{"class":118,"line":475},[116,1339,258],{"class":126},[116,1341,1342,1344,1346,1348,1350],{"class":118,"line":481},[116,1343,123],{"class":122},[116,1345,127],{"class":126},[116,1347,130],{"class":122},[116,1349,134],{"class":133},[116,1351,137],{"class":126},[116,1353,1354,1356,1359,1361,1363,1365,1367,1369,1371],{"class":118,"line":487},[116,1355,191],{"class":122},[116,1357,1358],{"class":133}," printArray",[116,1360,197],{"class":126},[116,1362,364],{"class":133},[116,1364,1155],{"class":203},[116,1366,1158],{"class":126},[116,1368,531],{"class":122},[116,1370,1163],{"class":203},[116,1372,215],{"class":126},[116,1374,1375],{"class":118,"line":492},[116,1376,179],{"emptyLinePlaceholder":178},[116,1378,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399],{"class":118,"line":498},[116,1380,1174],{"class":122},[116,1382,1177],{"class":126},[116,1384,531],{"class":122},[116,1386,1182],{"class":126},[116,1388,227],{"class":122},[116,1390,639],{"class":453},[116,1392,1189],{"class":126},[116,1394,127],{"class":122},[116,1396,1194],{"class":126},[116,1398,1197],{"class":122},[116,1400,215],{"class":126},[116,1402,1403,1406,1408,1411,1413,1416],{"class":118,"line":504},[116,1404,1405],{"class":126},"        cout ",[116,1407,548],{"class":122},[116,1409,1410],{"class":126}," arr[i] ",[116,1412,548],{"class":122},[116,1414,1415],{"class":551}," \" \"",[116,1417,457],{"class":126},[116,1419,1420],{"class":118,"line":513},[116,1421,1335],{"class":126},[116,1423,1424,1426,1428],{"class":118,"line":518},[116,1425,545],{"class":126},[116,1427,548],{"class":122},[116,1429,562],{"class":126},[116,1431,1432],{"class":118,"line":524},[116,1433,258],{"class":126},[116,1435,1436,1438,1440],{"class":118,"line":537},[116,1437,191],{"class":122},[116,1439,432],{"class":133},[116,1441,435],{"class":126},[116,1443,1444],{"class":118,"line":542},[116,1445,386],{"class":126},[116,1447,1448],{"class":118,"line":565},[116,1449,1450],{"class":184},"    //测试char数组\n",[116,1452,1453,1455,1458,1460,1463],{"class":118,"line":583},[116,1454,811],{"class":122},[116,1456,1457],{"class":126}," charArr[] ",[116,1459,227],{"class":122},[116,1461,1462],{"class":551}," \"bdcfeagh\"",[116,1464,457],{"class":126},[116,1466,1467,1469,1472,1474,1477,1480,1483,1485,1487,1490],{"class":118,"line":588},[116,1468,221],{"class":122},[116,1470,1471],{"class":126}," num ",[116,1473,227],{"class":122},[116,1475,1476],{"class":122}," sizeof",[116,1478,1479],{"class":126},"(charArr) ",[116,1481,1482],{"class":122},"/",[116,1484,1476],{"class":122},[116,1486,197],{"class":126},[116,1488,1489],{"class":122},"char",[116,1491,1492],{"class":126},");\n",[116,1494,1495,1498],{"class":118,"line":593},[116,1496,1497],{"class":133},"    mySort",[116,1499,1500],{"class":126},"(charArr, num);\n",[116,1502,1503,1506],{"class":118,"line":598},[116,1504,1505],{"class":133},"    printArray",[116,1507,1500],{"class":126},[116,1509,1510],{"class":118,"line":609},[116,1511,258],{"class":126},[116,1513,1514],{"class":118,"line":614},[116,1515,179],{"emptyLinePlaceholder":178},[116,1517,1518,1520,1522],{"class":118,"line":623},[116,1519,191],{"class":122},[116,1521,909],{"class":133},[116,1523,435],{"class":126},[116,1525,1526],{"class":118,"line":628},[116,1527,386],{"class":126},[116,1529,1530],{"class":118,"line":633},[116,1531,1532],{"class":184},"    //测试int数组\n",[116,1534,1535,1537,1540,1542,1545,1548,1550,1553,1555,1558,1560,1563,1565,1568,1570,1573,1575,1578,1580,1583,1585,1588],{"class":118,"line":644},[116,1536,221],{"class":122},[116,1538,1539],{"class":126}," intArr[] ",[116,1541,227],{"class":122},[116,1543,1544],{"class":126}," { ",[116,1546,1547],{"class":453},"7",[116,1549,207],{"class":126},[116,1551,1552],{"class":453},"5",[116,1554,207],{"class":126},[116,1556,1557],{"class":453},"8",[116,1559,207],{"class":126},[116,1561,1562],{"class":453},"1",[116,1564,207],{"class":126},[116,1566,1567],{"class":453},"3",[116,1569,207],{"class":126},[116,1571,1572],{"class":453},"9",[116,1574,207],{"class":126},[116,1576,1577],{"class":453},"2",[116,1579,207],{"class":126},[116,1581,1582],{"class":453},"4",[116,1584,207],{"class":126},[116,1586,1587],{"class":453},"6",[116,1589,1590],{"class":126}," };\n",[116,1592,1594,1596,1598,1600,1602,1605,1607,1609,1611,1613],{"class":118,"line":1593},51,[116,1595,221],{"class":122},[116,1597,1471],{"class":126},[116,1599,227],{"class":122},[116,1601,1476],{"class":122},[116,1603,1604],{"class":126},"(intArr) ",[116,1606,1482],{"class":122},[116,1608,1476],{"class":122},[116,1610,197],{"class":126},[116,1612,531],{"class":122},[116,1614,1492],{"class":126},[116,1616,1618,1620],{"class":118,"line":1617},52,[116,1619,1497],{"class":133},[116,1621,1622],{"class":126},"(intArr, num);\n",[116,1624,1626,1628],{"class":118,"line":1625},53,[116,1627,1505],{"class":133},[116,1629,1622],{"class":126},[116,1631,1633],{"class":118,"line":1632},54,[116,1634,258],{"class":126},[116,1636,1638],{"class":118,"line":1637},55,[116,1639,179],{"emptyLinePlaceholder":178},[116,1641,1643,1645,1647],{"class":118,"line":1642},56,[116,1644,531],{"class":122},[116,1646,603],{"class":133},[116,1648,606],{"class":126},[116,1650,1652],{"class":118,"line":1651},57,[116,1653,179],{"emptyLinePlaceholder":178},[116,1655,1657,1659],{"class":118,"line":1656},58,[116,1658,617],{"class":133},[116,1660,620],{"class":126},[116,1662,1664,1666],{"class":118,"line":1663},59,[116,1665,969],{"class":133},[116,1667,620],{"class":126},[116,1669,1671],{"class":118,"line":1670},60,[116,1672,179],{"emptyLinePlaceholder":178},[116,1674,1676],{"class":118,"line":1675},61,[116,1677,179],{"emptyLinePlaceholder":178},[116,1679,1681,1683,1685],{"class":118,"line":1680},62,[116,1682,636],{"class":122},[116,1684,639],{"class":453},[116,1686,457],{"class":126},[116,1688,1690],{"class":118,"line":1689},63,[116,1691,258],{"class":126},[17,1693,1694,1696],{},[21,1695,148],{}," 运行后会打印示例中的变量值或地址；地址值与运行环境有关，以同类对象的相对位置和指针变化为观察重点。",[17,1698,1699],{},"总结：模板可以提高代码复用，需要熟练掌握",[87,1701,1702],{"id":1702},"普通函数与函数模板的区别",[17,1704,1705],{},[21,1706,1707],{},"普通函数与函数模板区别：",[60,1709,1710,1713,1716],{},[63,1711,1712],{},"普通函数调用时可以发生自动类型转换（隐式类型转换）",[63,1714,1715],{},"函数模板调用时，如果利用自动类型推导，不会发生隐式类型转换",[63,1717,1718],{},"如果利用显示指定类型的方式，可以发生隐式类型转换",[17,1720,1721],{},[21,1722,168],{},[106,1724,1726],{"className":108,"code":1725,"language":110,"meta":111,"style":111},"//普通函数\nint myAdd01(int a, int b)\n{\n    return a + b;\n}\n\n//函数模板\ntemplate\u003Cclass T>\nT myAdd02(T a, T b)  \n{\n    return a + b;\n}\n\n//使用函数模板时，如果用自动类型推导，不会发生自动类型转换,即隐式类型转换\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; //正确，将char类型的'c'隐式转换为int类型  'c' 对应 ASCII码 99\n\n    //myAdd02(a, c); // 报错，使用自动类型推导时，不会发生隐式类型转换\n\n    myAdd02\u003Cint>(a, c); //正确，如果用显示指定类型，可以发生隐式类型转换\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[113,1727,1728,1733,1754,1758,1768,1772,1776,1781,1793,1815,1819,1829,1833,1837,1842,1850,1854,1866,1878,1890,1894,1913,1917,1925,1929,1944,1948,1952,1960,1964,1970,1974,1978,1986],{"__ignoreMap":111},[116,1729,1730],{"class":118,"line":119},[116,1731,1732],{"class":184},"//普通函数\n",[116,1734,1735,1737,1740,1742,1744,1746,1748,1750,1752],{"class":118,"line":140},[116,1736,531],{"class":122},[116,1738,1739],{"class":133}," myAdd01",[116,1741,197],{"class":126},[116,1743,531],{"class":122},[116,1745,204],{"class":203},[116,1747,207],{"class":126},[116,1749,531],{"class":122},[116,1751,212],{"class":203},[116,1753,380],{"class":126},[116,1755,1756],{"class":118,"line":188},[116,1757,386],{"class":126},[116,1759,1760,1762,1764,1766],{"class":118,"line":218},[116,1761,636],{"class":122},[116,1763,448],{"class":126},[116,1765,1239],{"class":122},[116,1767,241],{"class":126},[116,1769,1770],{"class":118,"line":233},[116,1771,258],{"class":126},[116,1773,1774],{"class":118,"line":244},[116,1775,179],{"emptyLinePlaceholder":178},[116,1777,1778],{"class":118,"line":255},[116,1779,1780],{"class":184},"//函数模板\n",[116,1782,1783,1785,1787,1789,1791],{"class":118,"line":261},[116,1784,123],{"class":122},[116,1786,127],{"class":126},[116,1788,701],{"class":122},[116,1790,134],{"class":133},[116,1792,137],{"class":126},[116,1794,1795,1797,1800,1802,1804,1806,1808,1810,1812],{"class":118,"line":266},[116,1796,364],{"class":133},[116,1798,1799],{"class":133}," myAdd02",[116,1801,197],{"class":126},[116,1803,364],{"class":133},[116,1805,204],{"class":203},[116,1807,207],{"class":126},[116,1809,364],{"class":133},[116,1811,212],{"class":203},[116,1813,1814],{"class":126},")  \n",[116,1816,1817],{"class":118,"line":272},[116,1818,386],{"class":126},[116,1820,1821,1823,1825,1827],{"class":118,"line":295},[116,1822,636],{"class":122},[116,1824,448],{"class":126},[116,1826,1239],{"class":122},[116,1828,241],{"class":126},[116,1830,1831],{"class":118,"line":307},[116,1832,258],{"class":126},[116,1834,1835],{"class":118,"line":316},[116,1836,179],{"emptyLinePlaceholder":178},[116,1838,1839],{"class":118,"line":325},[116,1840,1841],{"class":184},"//使用函数模板时，如果用自动类型推导，不会发生自动类型转换,即隐式类型转换\n",[116,1843,1844,1846,1848],{"class":118,"line":330},[116,1845,191],{"class":122},[116,1847,432],{"class":133},[116,1849,435],{"class":126},[116,1851,1852],{"class":118,"line":335},[116,1853,386],{"class":126},[116,1855,1856,1858,1860,1862,1864],{"class":118,"line":341},[116,1857,221],{"class":122},[116,1859,448],{"class":126},[116,1861,227],{"class":122},[116,1863,454],{"class":453},[116,1865,457],{"class":126},[116,1867,1868,1870,1872,1874,1876],{"class":118,"line":354},[116,1869,221],{"class":122},[116,1871,465],{"class":126},[116,1873,227],{"class":122},[116,1875,470],{"class":453},[116,1877,457],{"class":126},[116,1879,1880,1882,1884,1886,1888],{"class":118,"line":383},[116,1881,811],{"class":122},[116,1883,814],{"class":126},[116,1885,227],{"class":122},[116,1887,819],{"class":551},[116,1889,457],{"class":126},[116,1891,1892],{"class":118,"line":389},[116,1893,478],{"class":126},[116,1895,1896,1898,1900,1902,1905,1907,1910],{"class":118,"line":399},[116,1897,545],{"class":126},[116,1899,548],{"class":122},[116,1901,1739],{"class":133},[116,1903,1904],{"class":126},"(a, c) ",[116,1906,548],{"class":122},[116,1908,1909],{"class":126}," endl;",[116,1911,1912],{"class":184}," //正确，将char类型的'c'隐式转换为int类型  'c' 对应 ASCII码 99\n",[116,1914,1915],{"class":118,"line":408},[116,1916,179],{"emptyLinePlaceholder":178},[116,1918,1919,1922],{"class":118,"line":417},[116,1920,1921],{"class":184},"    //myAdd02(a, c);",[116,1923,1924],{"class":184}," // 报错，使用自动类型推导时，不会发生隐式类型转换\n",[116,1926,1927],{"class":118,"line":422},[116,1928,179],{"emptyLinePlaceholder":178},[116,1930,1931,1934,1936,1938,1941],{"class":118,"line":427},[116,1932,1933],{"class":133},"    myAdd02",[116,1935,127],{"class":126},[116,1937,531],{"class":122},[116,1939,1940],{"class":126},">(a, c);",[116,1942,1943],{"class":184}," //正确，如果用显示指定类型，可以发生隐式类型转换\n",[116,1945,1946],{"class":118,"line":438},[116,1947,258],{"class":126},[116,1949,1950],{"class":118,"line":443},[116,1951,179],{"emptyLinePlaceholder":178},[116,1953,1954,1956,1958],{"class":118,"line":460},[116,1955,531],{"class":122},[116,1957,603],{"class":133},[116,1959,606],{"class":126},[116,1961,1962],{"class":118,"line":475},[116,1963,179],{"emptyLinePlaceholder":178},[116,1965,1966,1968],{"class":118,"line":481},[116,1967,617],{"class":133},[116,1969,620],{"class":126},[116,1971,1972],{"class":118,"line":487},[116,1973,179],{"emptyLinePlaceholder":178},[116,1975,1976],{"class":118,"line":492},[116,1977,179],{"emptyLinePlaceholder":178},[116,1979,1980,1982,1984],{"class":118,"line":498},[116,1981,636],{"class":122},[116,1983,639],{"class":453},[116,1985,457],{"class":126},[116,1987,1988],{"class":118,"line":504},[116,1989,258],{"class":126},[17,1991,1992,651],{},[21,1993,148],{},[17,1995,1996],{},"总结：建议使用显示指定类型的方式，调用函数模板，因为可以自己确定通用类型T",[87,1998,1999],{"id":1999},"普通函数与函数模板的调用规则",[17,2001,2002],{},"调用规则如下：",[2004,2005,2006,2009,2012,2015],"ol",{},[63,2007,2008],{},"如果函数模板和普通函数都可以实现，优先调用普通函数",[63,2010,2011],{},"可以通过空模板参数列表来强制调用函数模板",[63,2013,2014],{},"函数模板也可以发生重载",[63,2016,2017],{},"如果函数模板可以产生更好的匹配,优先调用函数模板",[17,2019,2020],{},[21,2021,168],{},[106,2023,2025],{"className":108,"code":2024,"language":110,"meta":111,"style":111},"//普通函数与函数模板调用规则\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    //1、如果函数模板和普通函数都可以实现，优先调用普通函数\n    // 注意 如果告诉编译器  普通函数是有的，但只是声明没有实现，或者不在当前文件内实现，就会报错找不到\n    int a = 10;\n    int b = 20;\n    myPrint(a, b); //调用普通函数\n\n    //2、可以通过空模板参数列表来强制调用函数模板\n    myPrint\u003C>(a, b); //调用函数模板\n\n    //3、函数模板也可以发生重载\n    int c = 30;\n    myPrint(a, b, c); //调用重载的函数模板\n\n    //4、 如果函数模板可以产生更好的匹配,优先调用函数模板\n    char c1 = 'a';\n    char c2 = 'b';\n    myPrint(c1, c2); //调用函数模板\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[113,2026,2027,2032,2053,2057,2070,2074,2078,2090,2111,2116,2129,2133,2137,2149,2176,2180,2194,2198,2202,2210,2214,2219,2224,2236,2248,2258,2262,2267,2277,2281,2286,2299,2309,2313,2318,2332,2346,2355,2359,2363,2371,2375,2381,2385,2389,2397],{"__ignoreMap":111},[116,2028,2029],{"class":118,"line":119},[116,2030,2031],{"class":184},"//普通函数与函数模板调用规则\n",[116,2033,2034,2036,2039,2041,2043,2045,2047,2049,2051],{"class":118,"line":140},[116,2035,191],{"class":122},[116,2037,2038],{"class":133}," myPrint",[116,2040,197],{"class":126},[116,2042,531],{"class":122},[116,2044,204],{"class":203},[116,2046,207],{"class":126},[116,2048,531],{"class":122},[116,2050,212],{"class":203},[116,2052,380],{"class":126},[116,2054,2055],{"class":118,"line":188},[116,2056,386],{"class":126},[116,2058,2059,2061,2063,2066,2068],{"class":118,"line":218},[116,2060,545],{"class":126},[116,2062,548],{"class":122},[116,2064,2065],{"class":551}," \"调用的普通函数\"",[116,2067,555],{"class":122},[116,2069,562],{"class":126},[116,2071,2072],{"class":118,"line":233},[116,2073,258],{"class":126},[116,2075,2076],{"class":118,"line":244},[116,2077,179],{"emptyLinePlaceholder":178},[116,2079,2080,2082,2084,2086,2088],{"class":118,"line":255},[116,2081,123],{"class":122},[116,2083,127],{"class":126},[116,2085,130],{"class":122},[116,2087,134],{"class":133},[116,2089,137],{"class":126},[116,2091,2092,2094,2096,2098,2100,2102,2104,2106,2108],{"class":118,"line":261},[116,2093,191],{"class":122},[116,2095,2038],{"class":133},[116,2097,197],{"class":126},[116,2099,364],{"class":133},[116,2101,204],{"class":203},[116,2103,207],{"class":126},[116,2105,364],{"class":133},[116,2107,212],{"class":203},[116,2109,2110],{"class":126},") \n",[116,2112,2113],{"class":118,"line":266},[116,2114,2115],{"class":126},"{ \n",[116,2117,2118,2120,2122,2125,2127],{"class":118,"line":272},[116,2119,545],{"class":126},[116,2121,548],{"class":122},[116,2123,2124],{"class":551}," \"调用的模板\"",[116,2126,555],{"class":122},[116,2128,562],{"class":126},[116,2130,2131],{"class":118,"line":295},[116,2132,258],{"class":126},[116,2134,2135],{"class":118,"line":307},[116,2136,179],{"emptyLinePlaceholder":178},[116,2138,2139,2141,2143,2145,2147],{"class":118,"line":316},[116,2140,123],{"class":122},[116,2142,127],{"class":126},[116,2144,130],{"class":122},[116,2146,134],{"class":133},[116,2148,137],{"class":126},[116,2150,2151,2153,2155,2157,2159,2161,2163,2165,2167,2169,2171,2174],{"class":118,"line":325},[116,2152,191],{"class":122},[116,2154,2038],{"class":133},[116,2156,197],{"class":126},[116,2158,364],{"class":133},[116,2160,204],{"class":203},[116,2162,207],{"class":126},[116,2164,364],{"class":133},[116,2166,212],{"class":203},[116,2168,207],{"class":126},[116,2170,364],{"class":133},[116,2172,2173],{"class":203}," c",[116,2175,2110],{"class":126},[116,2177,2178],{"class":118,"line":330},[116,2179,2115],{"class":126},[116,2181,2182,2184,2186,2189,2191],{"class":118,"line":335},[116,2183,545],{"class":126},[116,2185,548],{"class":122},[116,2187,2188],{"class":551}," \"调用重载的模板\"",[116,2190,555],{"class":122},[116,2192,2193],{"class":126}," endl; \n",[116,2195,2196],{"class":118,"line":341},[116,2197,258],{"class":126},[116,2199,2200],{"class":118,"line":354},[116,2201,179],{"emptyLinePlaceholder":178},[116,2203,2204,2206,2208],{"class":118,"line":383},[116,2205,191],{"class":122},[116,2207,432],{"class":133},[116,2209,435],{"class":126},[116,2211,2212],{"class":118,"line":389},[116,2213,386],{"class":126},[116,2215,2216],{"class":118,"line":399},[116,2217,2218],{"class":184},"    //1、如果函数模板和普通函数都可以实现，优先调用普通函数\n",[116,2220,2221],{"class":118,"line":408},[116,2222,2223],{"class":184},"    // 注意 如果告诉编译器  普通函数是有的，但只是声明没有实现，或者不在当前文件内实现，就会报错找不到\n",[116,2225,2226,2228,2230,2232,2234],{"class":118,"line":417},[116,2227,221],{"class":122},[116,2229,448],{"class":126},[116,2231,227],{"class":122},[116,2233,454],{"class":453},[116,2235,457],{"class":126},[116,2237,2238,2240,2242,2244,2246],{"class":118,"line":422},[116,2239,221],{"class":122},[116,2241,465],{"class":126},[116,2243,227],{"class":122},[116,2245,470],{"class":453},[116,2247,457],{"class":126},[116,2249,2250,2253,2255],{"class":118,"line":427},[116,2251,2252],{"class":133},"    myPrint",[116,2254,832],{"class":126},[116,2256,2257],{"class":184}," //调用普通函数\n",[116,2259,2260],{"class":118,"line":438},[116,2261,179],{"emptyLinePlaceholder":178},[116,2263,2264],{"class":118,"line":443},[116,2265,2266],{"class":184},"    //2、可以通过空模板参数列表来强制调用函数模板\n",[116,2268,2269,2271,2274],{"class":118,"line":460},[116,2270,2252],{"class":133},[116,2272,2273],{"class":126},"\u003C>(a, b);",[116,2275,2276],{"class":184}," //调用函数模板\n",[116,2278,2279],{"class":118,"line":475},[116,2280,179],{"emptyLinePlaceholder":178},[116,2282,2283],{"class":118,"line":481},[116,2284,2285],{"class":184},"    //3、函数模板也可以发生重载\n",[116,2287,2288,2290,2292,2294,2297],{"class":118,"line":487},[116,2289,221],{"class":122},[116,2291,814],{"class":126},[116,2293,227],{"class":122},[116,2295,2296],{"class":453}," 30",[116,2298,457],{"class":126},[116,2300,2301,2303,2306],{"class":118,"line":492},[116,2302,2252],{"class":133},[116,2304,2305],{"class":126},"(a, b, c);",[116,2307,2308],{"class":184}," //调用重载的函数模板\n",[116,2310,2311],{"class":118,"line":498},[116,2312,179],{"emptyLinePlaceholder":178},[116,2314,2315],{"class":118,"line":504},[116,2316,2317],{"class":184},"    //4、 如果函数模板可以产生更好的匹配,优先调用函数模板\n",[116,2319,2320,2322,2325,2327,2330],{"class":118,"line":513},[116,2321,811],{"class":122},[116,2323,2324],{"class":126}," c1 ",[116,2326,227],{"class":122},[116,2328,2329],{"class":551}," 'a'",[116,2331,457],{"class":126},[116,2333,2334,2336,2339,2341,2344],{"class":118,"line":518},[116,2335,811],{"class":122},[116,2337,2338],{"class":126}," c2 ",[116,2340,227],{"class":122},[116,2342,2343],{"class":551}," 'b'",[116,2345,457],{"class":126},[116,2347,2348,2350,2353],{"class":118,"line":524},[116,2349,2252],{"class":133},[116,2351,2352],{"class":126},"(c1, c2);",[116,2354,2276],{"class":184},[116,2356,2357],{"class":118,"line":537},[116,2358,258],{"class":126},[116,2360,2361],{"class":118,"line":542},[116,2362,179],{"emptyLinePlaceholder":178},[116,2364,2365,2367,2369],{"class":118,"line":565},[116,2366,531],{"class":122},[116,2368,603],{"class":133},[116,2370,606],{"class":126},[116,2372,2373],{"class":118,"line":583},[116,2374,179],{"emptyLinePlaceholder":178},[116,2376,2377,2379],{"class":118,"line":588},[116,2378,617],{"class":133},[116,2380,620],{"class":126},[116,2382,2383],{"class":118,"line":593},[116,2384,179],{"emptyLinePlaceholder":178},[116,2386,2387],{"class":118,"line":598},[116,2388,179],{"emptyLinePlaceholder":178},[116,2390,2391,2393,2395],{"class":118,"line":609},[116,2392,636],{"class":122},[116,2394,639],{"class":453},[116,2396,457],{"class":126},[116,2398,2399],{"class":118,"line":614},[116,2400,258],{"class":126},[17,2402,2403,651],{},[21,2404,148],{},[17,2406,2407],{},"总结：既然提供了函数模板，最好就不要提供普通函数，否则容易出现二义性",[87,2409,2410],{"id":2410},"模板的局限性",[17,2412,2413],{},[21,2414,2415],{},"局限性：",[60,2417,2418],{},[63,2419,2420],{},"模板的通用性并不是万能的",[17,2422,2423],{},[21,2424,2425],{},"例如：",[106,2427,2429],{"className":108,"code":2428,"language":110,"meta":111,"style":111},"    template\u003Cclass T>\n    void f(T a, T b)\n    { \n        a = b;\n    }\n",[113,2430,2431,2444,2466,2471,2480],{"__ignoreMap":111},[116,2432,2433,2436,2438,2440,2442],{"class":118,"line":119},[116,2434,2435],{"class":122},"    template",[116,2437,127],{"class":126},[116,2439,701],{"class":122},[116,2441,134],{"class":133},[116,2443,137],{"class":126},[116,2445,2446,2449,2452,2454,2456,2458,2460,2462,2464],{"class":118,"line":140},[116,2447,2448],{"class":122},"    void",[116,2450,2451],{"class":133}," f",[116,2453,197],{"class":126},[116,2455,364],{"class":133},[116,2457,204],{"class":203},[116,2459,207],{"class":126},[116,2461,364],{"class":133},[116,2463,212],{"class":203},[116,2465,380],{"class":126},[116,2467,2468],{"class":118,"line":188},[116,2469,2470],{"class":126},"    { \n",[116,2472,2473,2476,2478],{"class":118,"line":218},[116,2474,2475],{"class":126},"        a ",[116,2477,227],{"class":122},[116,2479,241],{"class":126},[116,2481,2482],{"class":118,"line":233},[116,2483,1335],{"class":126},[17,2485,2486,149],{},[21,2487,148],{},[17,2489,2490],{},"在上述代码中提供的赋值操作，如果传入的a和b是一个数组，就无法实现了",[17,2492,2493],{},"再例如：",[106,2495,2497],{"className":108,"code":2496,"language":110,"meta":111,"style":111},"    template\u003Cclass T>\n    void f(T a, T b)\n    { \n        if(a > b) { ... }\n    }\n",[113,2498,2499,2511,2531,2535,2547],{"__ignoreMap":111},[116,2500,2501,2503,2505,2507,2509],{"class":118,"line":119},[116,2502,2435],{"class":122},[116,2504,127],{"class":126},[116,2506,701],{"class":122},[116,2508,134],{"class":133},[116,2510,137],{"class":126},[116,2512,2513,2515,2517,2519,2521,2523,2525,2527,2529],{"class":118,"line":140},[116,2514,2448],{"class":122},[116,2516,2451],{"class":133},[116,2518,197],{"class":126},[116,2520,364],{"class":133},[116,2522,204],{"class":203},[116,2524,207],{"class":126},[116,2526,364],{"class":133},[116,2528,212],{"class":203},[116,2530,380],{"class":126},[116,2532,2533],{"class":118,"line":188},[116,2534,2470],{"class":126},[116,2536,2537,2539,2542,2544],{"class":118,"line":218},[116,2538,1302],{"class":122},[116,2540,2541],{"class":126},"(a ",[116,2543,1133],{"class":122},[116,2545,2546],{"class":126}," b) { ... }\n",[116,2548,2549],{"class":118,"line":233},[116,2550,1335],{"class":126},[17,2552,2553,2555],{},[21,2554,148],{}," 这段是语法片段，重点看写法；补全上下文后再运行。",[17,2557,2558],{},"在上述代码中，如果T的数据类型传入的是像Person这样的自定义数据类型，也无法正常运行",[17,2560,2561,2562,2565,2566],{},"因此C++为了解决这种问题，提供模板的重载，可以为这些",[21,2563,2564],{},"特定的类型","提供",[21,2567,2568],{},"具体化的模板",[17,2570,2571],{},[21,2572,168],{},[106,2574,2576],{"className":108,"code":2575,"language":110,"meta":111,"style":111},"#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//普通函数模板\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//具体化，显示具体化的原型和定意思以template\u003C>开头，并通过名称来指出类型\n//具体化优先于常规模板\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    //内置数据类型可以直接使用通用的函数模板\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    //自定义数据类型，不会调用普通的函数模板\n    //可以创建具体化的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",[113,2577,2578,2586,2599,2603,2610,2614,2621,2625,2630,2652,2656,2669,2681,2685,2690,2697,2702,2706,2711,2723,2749,2753,2767,2771,2781,2785,2790,2794,2803,2807,2811,2815,2820,2825,2857,2861,2884,2888,2896,2900,2904,2908,2916,2920,2924,2928,2936,2940,2952,2964,2969,2983,2990,2994,3007,3011,3015,3019,3032,3036,3040,3044,3052,3056,3076,3093,3099,3105,3119,3126,3131,3145,3150,3155,3160,3174,3179,3184,3189,3198,3203,3210,3215,3222,3227,3232,3241],{"__ignoreMap":111},[116,2579,2580,2583],{"class":118,"line":119},[116,2581,2582],{"class":122},"#include",[116,2584,2585],{"class":551},"\u003Ciostream>\n",[116,2587,2588,2591,2594,2597],{"class":118,"line":140},[116,2589,2590],{"class":122},"using",[116,2592,2593],{"class":122}," namespace",[116,2595,2596],{"class":133}," std",[116,2598,457],{"class":126},[116,2600,2601],{"class":118,"line":188},[116,2602,179],{"emptyLinePlaceholder":178},[116,2604,2605,2607],{"class":118,"line":218},[116,2606,2582],{"class":122},[116,2608,2609],{"class":551}," \u003Cstring>\n",[116,2611,2612],{"class":118,"line":233},[116,2613,179],{"emptyLinePlaceholder":178},[116,2615,2616,2618],{"class":118,"line":244},[116,2617,701],{"class":122},[116,2619,2620],{"class":133}," Person\n",[116,2622,2623],{"class":118,"line":255},[116,2624,386],{"class":126},[116,2626,2627],{"class":118,"line":261},[116,2628,2629],{"class":122},"public:\n",[116,2631,2632,2635,2637,2640,2643,2645,2647,2650],{"class":118,"line":266},[116,2633,2634],{"class":133},"    Person",[116,2636,197],{"class":126},[116,2638,2639],{"class":133},"string",[116,2641,2642],{"class":203}," name",[116,2644,207],{"class":126},[116,2646,531],{"class":122},[116,2648,2649],{"class":203}," age",[116,2651,380],{"class":126},[116,2653,2654],{"class":118,"line":272},[116,2655,1204],{"class":126},[116,2657,2658,2661,2664,2666],{"class":118,"line":295},[116,2659,2660],{"class":453},"        this",[116,2662,2663],{"class":126},"->m_Name ",[116,2665,227],{"class":122},[116,2667,2668],{"class":126}," name;\n",[116,2670,2671,2673,2676,2678],{"class":118,"line":307},[116,2672,2660],{"class":453},[116,2674,2675],{"class":126},"->m_Age ",[116,2677,227],{"class":122},[116,2679,2680],{"class":126}," age;\n",[116,2682,2683],{"class":118,"line":316},[116,2684,1335],{"class":126},[116,2686,2687],{"class":118,"line":325},[116,2688,2689],{"class":126},"    string m_Name;\n",[116,2691,2692,2694],{"class":118,"line":330},[116,2693,221],{"class":122},[116,2695,2696],{"class":126}," m_Age;\n",[116,2698,2699],{"class":118,"line":335},[116,2700,2701],{"class":126},"};\n",[116,2703,2704],{"class":118,"line":341},[116,2705,179],{"emptyLinePlaceholder":178},[116,2707,2708],{"class":118,"line":354},[116,2709,2710],{"class":184},"//普通函数模板\n",[116,2712,2713,2715,2717,2719,2721],{"class":118,"line":383},[116,2714,123],{"class":122},[116,2716,127],{"class":126},[116,2718,701],{"class":122},[116,2720,134],{"class":133},[116,2722,137],{"class":126},[116,2724,2725,2728,2731,2733,2735,2737,2739,2741,2743,2745,2747],{"class":118,"line":389},[116,2726,2727],{"class":122},"bool",[116,2729,2730],{"class":133}," myCompare",[116,2732,197],{"class":126},[116,2734,364],{"class":133},[116,2736,367],{"class":122},[116,2738,204],{"class":203},[116,2740,207],{"class":126},[116,2742,364],{"class":133},[116,2744,367],{"class":122},[116,2746,212],{"class":203},[116,2748,380],{"class":126},[116,2750,2751],{"class":118,"line":399},[116,2752,386],{"class":126},[116,2754,2755,2758,2761,2764],{"class":118,"line":408},[116,2756,2757],{"class":122},"    if",[116,2759,2760],{"class":126}," (a ",[116,2762,2763],{"class":122},"==",[116,2765,2766],{"class":126}," b)\n",[116,2768,2769],{"class":118,"line":417},[116,2770,1204],{"class":126},[116,2772,2773,2776,2779],{"class":118,"line":422},[116,2774,2775],{"class":122},"        return",[116,2777,2778],{"class":453}," true",[116,2780,457],{"class":126},[116,2782,2783],{"class":118,"line":427},[116,2784,1335],{"class":126},[116,2786,2787],{"class":118,"line":438},[116,2788,2789],{"class":122},"    else\n",[116,2791,2792],{"class":118,"line":443},[116,2793,1204],{"class":126},[116,2795,2796,2798,2801],{"class":118,"line":460},[116,2797,2775],{"class":122},[116,2799,2800],{"class":453}," false",[116,2802,457],{"class":126},[116,2804,2805],{"class":118,"line":475},[116,2806,1335],{"class":126},[116,2808,2809],{"class":118,"line":481},[116,2810,258],{"class":126},[116,2812,2813],{"class":118,"line":487},[116,2814,179],{"emptyLinePlaceholder":178},[116,2816,2817],{"class":118,"line":492},[116,2818,2819],{"class":184},"//具体化，显示具体化的原型和定意思以template\u003C>开头，并通过名称来指出类型\n",[116,2821,2822],{"class":118,"line":498},[116,2823,2824],{"class":184},"//具体化优先于常规模板\n",[116,2826,2827,2829,2832,2834,2836,2838,2841,2843,2846,2848,2850,2852,2855],{"class":118,"line":504},[116,2828,123],{"class":122},[116,2830,2831],{"class":126},"\u003C> ",[116,2833,2727],{"class":122},[116,2835,2730],{"class":133},[116,2837,197],{"class":126},[116,2839,2840],{"class":133},"Person",[116,2842,1070],{"class":122},[116,2844,2845],{"class":203},"p1",[116,2847,207],{"class":126},[116,2849,2840],{"class":133},[116,2851,1070],{"class":122},[116,2853,2854],{"class":203},"p2",[116,2856,380],{"class":126},[116,2858,2859],{"class":118,"line":513},[116,2860,386],{"class":126},[116,2862,2863,2865,2868,2870,2873,2876,2879,2881],{"class":118,"line":518},[116,2864,2757],{"class":122},[116,2866,2867],{"class":126}," ( p1.m_Name  ",[116,2869,2763],{"class":122},[116,2871,2872],{"class":126}," p2.m_Name ",[116,2874,2875],{"class":122},"&&",[116,2877,2878],{"class":126}," p1.m_Age ",[116,2880,2763],{"class":122},[116,2882,2883],{"class":126}," p2.m_Age)\n",[116,2885,2886],{"class":118,"line":524},[116,2887,1204],{"class":126},[116,2889,2890,2892,2894],{"class":118,"line":537},[116,2891,2775],{"class":122},[116,2893,2778],{"class":453},[116,2895,457],{"class":126},[116,2897,2898],{"class":118,"line":542},[116,2899,1335],{"class":126},[116,2901,2902],{"class":118,"line":565},[116,2903,2789],{"class":122},[116,2905,2906],{"class":118,"line":583},[116,2907,1204],{"class":126},[116,2909,2910,2912,2914],{"class":118,"line":588},[116,2911,2775],{"class":122},[116,2913,2800],{"class":453},[116,2915,457],{"class":126},[116,2917,2918],{"class":118,"line":593},[116,2919,1335],{"class":126},[116,2921,2922],{"class":118,"line":598},[116,2923,258],{"class":126},[116,2925,2926],{"class":118,"line":609},[116,2927,179],{"emptyLinePlaceholder":178},[116,2929,2930,2932,2934],{"class":118,"line":614},[116,2931,191],{"class":122},[116,2933,432],{"class":133},[116,2935,435],{"class":126},[116,2937,2938],{"class":118,"line":623},[116,2939,386],{"class":126},[116,2941,2942,2944,2946,2948,2950],{"class":118,"line":628},[116,2943,221],{"class":122},[116,2945,448],{"class":126},[116,2947,227],{"class":122},[116,2949,454],{"class":453},[116,2951,457],{"class":126},[116,2953,2954,2956,2958,2960,2962],{"class":118,"line":633},[116,2955,221],{"class":122},[116,2957,465],{"class":126},[116,2959,227],{"class":122},[116,2961,470],{"class":453},[116,2963,457],{"class":126},[116,2965,2966],{"class":118,"line":644},[116,2967,2968],{"class":184},"    //内置数据类型可以直接使用通用的函数模板\n",[116,2970,2971,2974,2977,2979,2981],{"class":118,"line":1593},[116,2972,2973],{"class":122},"    bool",[116,2975,2976],{"class":126}," ret ",[116,2978,227],{"class":122},[116,2980,2730],{"class":133},[116,2982,510],{"class":126},[116,2984,2985,2987],{"class":118,"line":1617},[116,2986,2757],{"class":122},[116,2988,2989],{"class":126}," (ret)\n",[116,2991,2992],{"class":118,"line":1625},[116,2993,1204],{"class":126},[116,2995,2996,2998,3000,3003,3005],{"class":118,"line":1632},[116,2997,1405],{"class":126},[116,2999,548],{"class":122},[116,3001,3002],{"class":551}," \"a == b \"",[116,3004,555],{"class":122},[116,3006,562],{"class":126},[116,3008,3009],{"class":118,"line":1637},[116,3010,1335],{"class":126},[116,3012,3013],{"class":118,"line":1642},[116,3014,2789],{"class":122},[116,3016,3017],{"class":118,"line":1651},[116,3018,1204],{"class":126},[116,3020,3021,3023,3025,3028,3030],{"class":118,"line":1656},[116,3022,1405],{"class":126},[116,3024,548],{"class":122},[116,3026,3027],{"class":551}," \"a != b \"",[116,3029,555],{"class":122},[116,3031,562],{"class":126},[116,3033,3034],{"class":118,"line":1663},[116,3035,1335],{"class":126},[116,3037,3038],{"class":118,"line":1670},[116,3039,258],{"class":126},[116,3041,3042],{"class":118,"line":1675},[116,3043,179],{"emptyLinePlaceholder":178},[116,3045,3046,3048,3050],{"class":118,"line":1680},[116,3047,191],{"class":122},[116,3049,909],{"class":133},[116,3051,435],{"class":126},[116,3053,3054],{"class":118,"line":1689},[116,3055,386],{"class":126},[116,3057,3059,3062,3064,3066,3069,3071,3074],{"class":118,"line":3058},64,[116,3060,3061],{"class":126},"    Person ",[116,3063,2845],{"class":133},[116,3065,197],{"class":126},[116,3067,3068],{"class":551},"\"Tom\"",[116,3070,207],{"class":126},[116,3072,3073],{"class":453},"10",[116,3075,1492],{"class":126},[116,3077,3079,3081,3083,3085,3087,3089,3091],{"class":118,"line":3078},65,[116,3080,3061],{"class":126},[116,3082,2854],{"class":133},[116,3084,197],{"class":126},[116,3086,3068],{"class":551},[116,3088,207],{"class":126},[116,3090,3073],{"class":453},[116,3092,1492],{"class":126},[116,3094,3096],{"class":118,"line":3095},66,[116,3097,3098],{"class":184},"    //自定义数据类型，不会调用普通的函数模板\n",[116,3100,3102],{"class":118,"line":3101},67,[116,3103,3104],{"class":184},"    //可以创建具体化的Person数据类型的模板，用于特殊处理这个类型\n",[116,3106,3108,3110,3112,3114,3116],{"class":118,"line":3107},68,[116,3109,2973],{"class":122},[116,3111,2976],{"class":126},[116,3113,227],{"class":122},[116,3115,2730],{"class":133},[116,3117,3118],{"class":126},"(p1, p2);\n",[116,3120,3122,3124],{"class":118,"line":3121},69,[116,3123,2757],{"class":122},[116,3125,2989],{"class":126},[116,3127,3129],{"class":118,"line":3128},70,[116,3130,1204],{"class":126},[116,3132,3134,3136,3138,3141,3143],{"class":118,"line":3133},71,[116,3135,1405],{"class":126},[116,3137,548],{"class":122},[116,3139,3140],{"class":551}," \"p1 == p2 \"",[116,3142,555],{"class":122},[116,3144,562],{"class":126},[116,3146,3148],{"class":118,"line":3147},72,[116,3149,1335],{"class":126},[116,3151,3153],{"class":118,"line":3152},73,[116,3154,2789],{"class":122},[116,3156,3158],{"class":118,"line":3157},74,[116,3159,1204],{"class":126},[116,3161,3163,3165,3167,3170,3172],{"class":118,"line":3162},75,[116,3164,1405],{"class":126},[116,3166,548],{"class":122},[116,3168,3169],{"class":551}," \"p1 != p2 \"",[116,3171,555],{"class":122},[116,3173,562],{"class":126},[116,3175,3177],{"class":118,"line":3176},76,[116,3178,1335],{"class":126},[116,3180,3182],{"class":118,"line":3181},77,[116,3183,258],{"class":126},[116,3185,3187],{"class":118,"line":3186},78,[116,3188,179],{"emptyLinePlaceholder":178},[116,3190,3192,3194,3196],{"class":118,"line":3191},79,[116,3193,531],{"class":122},[116,3195,603],{"class":133},[116,3197,606],{"class":126},[116,3199,3201],{"class":118,"line":3200},80,[116,3202,179],{"emptyLinePlaceholder":178},[116,3204,3206,3208],{"class":118,"line":3205},81,[116,3207,617],{"class":133},[116,3209,620],{"class":126},[116,3211,3213],{"class":118,"line":3212},82,[116,3214,179],{"emptyLinePlaceholder":178},[116,3216,3218,3220],{"class":118,"line":3217},83,[116,3219,969],{"class":133},[116,3221,620],{"class":126},[116,3223,3225],{"class":118,"line":3224},84,[116,3226,179],{"emptyLinePlaceholder":178},[116,3228,3230],{"class":118,"line":3229},85,[116,3231,179],{"emptyLinePlaceholder":178},[116,3233,3235,3237,3239],{"class":118,"line":3234},86,[116,3236,636],{"class":122},[116,3238,639],{"class":453},[116,3240,457],{"class":126},[116,3242,3244],{"class":118,"line":3243},87,[116,3245,258],{"class":126},[17,3247,3248,1696],{},[21,3249,148],{},[17,3251,654],{},[60,3253,3254,3257],{},[63,3255,3256],{},"利用具体化的模板，可以解决自定义类型的通用化",[63,3258,3259],{},"学习模板并不是为了写模板，而是在STL能够运用系统提供的模板",[13,3261,85],{"id":85},[87,3263,3264],{"id":3264},"类模板语法",[17,3266,3267],{},"类模板作用：",[60,3269,3270],{},[63,3271,3272,3273,99],{},"建立一个通用类，类中的成员 数据类型可以不具体制定，用一个",[21,3274,98],{},[17,3276,3277],{},[21,3278,104],{},[106,3280,3282],{"className":108,"code":3281,"language":110,"meta":111,"style":111},"template\u003Ctypename T>\n类\n",[113,3283,3284,3296],{"__ignoreMap":111},[116,3285,3286,3288,3290,3292,3294],{"class":118,"line":119},[116,3287,123],{"class":122},[116,3289,127],{"class":126},[116,3291,130],{"class":122},[116,3293,134],{"class":133},[116,3295,137],{"class":126},[116,3297,3298],{"class":118,"line":140},[116,3299,3300],{"class":126},"类\n",[17,3302,3303,149],{},[21,3304,148],{},[17,3306,3307],{},[21,3308,154],{},[17,3310,157],{},[17,3312,160],{},[17,3314,163],{},[17,3316,3317],{},[21,3318,168],{},[106,3320,3322],{"className":108,"code":3321,"language":110,"meta":111,"style":111},"#include \u003Cstring>\n//类模板\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    // 指定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",[113,3323,3324,3330,3335,3356,3362,3366,3370,3390,3394,3405,3416,3420,3429,3433,3464,3468,3472,3477,3482,3486,3490,3498,3502,3507,3534,3544,3548,3552,3560,3564,3570,3574,3578,3586],{"__ignoreMap":111},[116,3325,3326,3328],{"class":118,"line":119},[116,3327,2582],{"class":122},[116,3329,2609],{"class":551},[116,3331,3332],{"class":118,"line":140},[116,3333,3334],{"class":184},"//类模板\n",[116,3336,3337,3339,3341,3343,3346,3348,3350,3353],{"class":118,"line":188},[116,3338,123],{"class":122},[116,3340,127],{"class":126},[116,3342,701],{"class":122},[116,3344,3345],{"class":133}," NameType",[116,3347,207],{"class":126},[116,3349,701],{"class":122},[116,3351,3352],{"class":133}," AgeType",[116,3354,3355],{"class":126},"> \n",[116,3357,3358,3360],{"class":118,"line":218},[116,3359,701],{"class":122},[116,3361,2620],{"class":133},[116,3363,3364],{"class":118,"line":233},[116,3365,386],{"class":126},[116,3367,3368],{"class":118,"line":244},[116,3369,2629],{"class":122},[116,3371,3372,3374,3376,3379,3381,3383,3386,3388],{"class":118,"line":255},[116,3373,2634],{"class":133},[116,3375,197],{"class":126},[116,3377,3378],{"class":133},"NameType",[116,3380,2642],{"class":203},[116,3382,207],{"class":126},[116,3384,3385],{"class":133},"AgeType",[116,3387,2649],{"class":203},[116,3389,380],{"class":126},[116,3391,3392],{"class":118,"line":261},[116,3393,1204],{"class":126},[116,3395,3396,3398,3401,3403],{"class":118,"line":266},[116,3397,2660],{"class":453},[116,3399,3400],{"class":126},"->mName ",[116,3402,227],{"class":122},[116,3404,2668],{"class":126},[116,3406,3407,3409,3412,3414],{"class":118,"line":272},[116,3408,2660],{"class":453},[116,3410,3411],{"class":126},"->mAge ",[116,3413,227],{"class":122},[116,3415,2680],{"class":126},[116,3417,3418],{"class":118,"line":295},[116,3419,1335],{"class":126},[116,3421,3422,3424,3427],{"class":118,"line":307},[116,3423,2448],{"class":122},[116,3425,3426],{"class":133}," showPerson",[116,3428,435],{"class":126},[116,3430,3431],{"class":118,"line":316},[116,3432,1204],{"class":126},[116,3434,3435,3437,3439,3442,3444,3447,3449,3451,3454,3456,3458,3460,3462],{"class":118,"line":325},[116,3436,1405],{"class":126},[116,3438,548],{"class":122},[116,3440,3441],{"class":551}," \"name: \"",[116,3443,555],{"class":122},[116,3445,3446],{"class":453}," this",[116,3448,3400],{"class":126},[116,3450,548],{"class":122},[116,3452,3453],{"class":551}," \" age: \"",[116,3455,555],{"class":122},[116,3457,3446],{"class":453},[116,3459,3411],{"class":126},[116,3461,548],{"class":122},[116,3463,562],{"class":126},[116,3465,3466],{"class":118,"line":330},[116,3467,1335],{"class":126},[116,3469,3470],{"class":118,"line":335},[116,3471,2629],{"class":122},[116,3473,3474],{"class":118,"line":341},[116,3475,3476],{"class":126},"    NameType mName;\n",[116,3478,3479],{"class":118,"line":354},[116,3480,3481],{"class":126},"    AgeType mAge;\n",[116,3483,3484],{"class":118,"line":383},[116,3485,2701],{"class":126},[116,3487,3488],{"class":118,"line":389},[116,3489,179],{"emptyLinePlaceholder":178},[116,3491,3492,3494,3496],{"class":118,"line":399},[116,3493,191],{"class":122},[116,3495,432],{"class":133},[116,3497,435],{"class":126},[116,3499,3500],{"class":118,"line":408},[116,3501,386],{"class":126},[116,3503,3504],{"class":118,"line":417},[116,3505,3506],{"class":184},"    // 指定NameType 为string类型，AgeType 为 int类型\n",[116,3508,3509,3511,3513,3516,3519,3522,3524,3527,3529,3532],{"class":118,"line":422},[116,3510,2634],{"class":126},[116,3512,127],{"class":122},[116,3514,3515],{"class":126},"string, ",[116,3517,3518],{"class":122},"int>",[116,3520,3521],{"class":133},"P1",[116,3523,197],{"class":126},[116,3525,3526],{"class":551},"\"孙悟空\"",[116,3528,207],{"class":126},[116,3530,3531],{"class":453},"999",[116,3533,1492],{"class":126},[116,3535,3536,3539,3542],{"class":118,"line":427},[116,3537,3538],{"class":126},"    P1.",[116,3540,3541],{"class":133},"showPerson",[116,3543,620],{"class":126},[116,3545,3546],{"class":118,"line":438},[116,3547,258],{"class":126},[116,3549,3550],{"class":118,"line":443},[116,3551,179],{"emptyLinePlaceholder":178},[116,3553,3554,3556,3558],{"class":118,"line":460},[116,3555,531],{"class":122},[116,3557,603],{"class":133},[116,3559,606],{"class":126},[116,3561,3562],{"class":118,"line":475},[116,3563,179],{"emptyLinePlaceholder":178},[116,3565,3566,3568],{"class":118,"line":481},[116,3567,617],{"class":133},[116,3569,620],{"class":126},[116,3571,3572],{"class":118,"line":487},[116,3573,179],{"emptyLinePlaceholder":178},[116,3575,3576],{"class":118,"line":492},[116,3577,179],{"emptyLinePlaceholder":178},[116,3579,3580,3582,3584],{"class":118,"line":498},[116,3581,636],{"class":122},[116,3583,639],{"class":453},[116,3585,457],{"class":126},[116,3587,3588],{"class":118,"line":504},[116,3589,258],{"class":126},[17,3591,3592,1696],{},[21,3593,148],{},[17,3595,3596],{},"总结：类模板和函数模板语法相似，在声明模板template后面加类，此类称为类模板",[87,3598,3599],{"id":3599},"类模板与函数模板区别",[17,3601,3602],{},"类模板与函数模板区别主要有两点：",[2004,3604,3605,3608],{},[63,3606,3607],{},"类模板没有自动类型推导的使用方式",[63,3609,3610],{},"类模板在模板参数列表中可以有默认参数",[17,3612,3613],{},[21,3614,168],{},[106,3616,3618],{"className":108,"code":3617,"language":110,"meta":111,"style":111},"#include \u003Cstring>\n//类模板\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//1、类模板没有自动类型推导的使用方式\nvoid test01()\n{\n    // Person p(\"孙悟空\", 1000); // 错误 类模板使用时候，不可以用自动类型推导\n    Person \u003Cstring ,int>p(\"孙悟空\", 1000); //必须使用显示指定类型的方式，使用类模板\n    p.showPerson();\n}\n\n//2、类模板在模板参数列表中可以有默认参数\nvoid test02()\n{\n    Person \u003Cstring> p(\"猪八戒\", 999); //类模板中的模板参数列表 可以指定默认参数\n    p.showPerson();\n}\n\nint main() {\n\n    test01();\n\n    test02();\n\n\n    return 0;\n}\n",[113,3619,3620,3626,3630,3652,3658,3662,3666,3684,3688,3698,3708,3712,3720,3724,3752,3756,3760,3764,3768,3772,3776,3781,3789,3793,3801,3829,3838,3842,3846,3851,3859,3863,3890,3898,3902,3906,3914,3918,3924,3928,3934,3938,3942,3950],{"__ignoreMap":111},[116,3621,3622,3624],{"class":118,"line":119},[116,3623,2582],{"class":122},[116,3625,2609],{"class":551},[116,3627,3628],{"class":118,"line":140},[116,3629,3334],{"class":184},[116,3631,3632,3634,3636,3638,3640,3642,3644,3646,3649],{"class":118,"line":188},[116,3633,123],{"class":122},[116,3635,127],{"class":126},[116,3637,701],{"class":122},[116,3639,3345],{"class":133},[116,3641,207],{"class":126},[116,3643,701],{"class":122},[116,3645,3352],{"class":133},[116,3647,3648],{"class":122}," =",[116,3650,3651],{"class":126}," int> \n",[116,3653,3654,3656],{"class":118,"line":218},[116,3655,701],{"class":122},[116,3657,2620],{"class":133},[116,3659,3660],{"class":118,"line":233},[116,3661,386],{"class":126},[116,3663,3664],{"class":118,"line":244},[116,3665,2629],{"class":122},[116,3667,3668,3670,3672,3674,3676,3678,3680,3682],{"class":118,"line":255},[116,3669,2634],{"class":133},[116,3671,197],{"class":126},[116,3673,3378],{"class":133},[116,3675,2642],{"class":203},[116,3677,207],{"class":126},[116,3679,3385],{"class":133},[116,3681,2649],{"class":203},[116,3683,380],{"class":126},[116,3685,3686],{"class":118,"line":261},[116,3687,1204],{"class":126},[116,3689,3690,3692,3694,3696],{"class":118,"line":266},[116,3691,2660],{"class":453},[116,3693,3400],{"class":126},[116,3695,227],{"class":122},[116,3697,2668],{"class":126},[116,3699,3700,3702,3704,3706],{"class":118,"line":272},[116,3701,2660],{"class":453},[116,3703,3411],{"class":126},[116,3705,227],{"class":122},[116,3707,2680],{"class":126},[116,3709,3710],{"class":118,"line":295},[116,3711,1335],{"class":126},[116,3713,3714,3716,3718],{"class":118,"line":307},[116,3715,2448],{"class":122},[116,3717,3426],{"class":133},[116,3719,435],{"class":126},[116,3721,3722],{"class":118,"line":316},[116,3723,1204],{"class":126},[116,3725,3726,3728,3730,3732,3734,3736,3738,3740,3742,3744,3746,3748,3750],{"class":118,"line":325},[116,3727,1405],{"class":126},[116,3729,548],{"class":122},[116,3731,3441],{"class":551},[116,3733,555],{"class":122},[116,3735,3446],{"class":453},[116,3737,3400],{"class":126},[116,3739,548],{"class":122},[116,3741,3453],{"class":551},[116,3743,555],{"class":122},[116,3745,3446],{"class":453},[116,3747,3411],{"class":126},[116,3749,548],{"class":122},[116,3751,562],{"class":126},[116,3753,3754],{"class":118,"line":330},[116,3755,1335],{"class":126},[116,3757,3758],{"class":118,"line":335},[116,3759,2629],{"class":122},[116,3761,3762],{"class":118,"line":341},[116,3763,3476],{"class":126},[116,3765,3766],{"class":118,"line":354},[116,3767,3481],{"class":126},[116,3769,3770],{"class":118,"line":383},[116,3771,2701],{"class":126},[116,3773,3774],{"class":118,"line":389},[116,3775,179],{"emptyLinePlaceholder":178},[116,3777,3778],{"class":118,"line":399},[116,3779,3780],{"class":184},"//1、类模板没有自动类型推导的使用方式\n",[116,3782,3783,3785,3787],{"class":118,"line":408},[116,3784,191],{"class":122},[116,3786,432],{"class":133},[116,3788,435],{"class":126},[116,3790,3791],{"class":118,"line":417},[116,3792,386],{"class":126},[116,3794,3795,3798],{"class":118,"line":422},[116,3796,3797],{"class":184},"    // Person p(\"孙悟空\", 1000);",[116,3799,3800],{"class":184}," // 错误 类模板使用时候，不可以用自动类型推导\n",[116,3802,3803,3805,3807,3810,3812,3814,3816,3818,3820,3823,3826],{"class":118,"line":427},[116,3804,3061],{"class":126},[116,3806,127],{"class":122},[116,3808,3809],{"class":126},"string ,",[116,3811,3518],{"class":122},[116,3813,17],{"class":133},[116,3815,197],{"class":126},[116,3817,3526],{"class":551},[116,3819,207],{"class":126},[116,3821,3822],{"class":453},"1000",[116,3824,3825],{"class":126},");",[116,3827,3828],{"class":184}," //必须使用显示指定类型的方式，使用类模板\n",[116,3830,3831,3834,3836],{"class":118,"line":438},[116,3832,3833],{"class":126},"    p.",[116,3835,3541],{"class":133},[116,3837,620],{"class":126},[116,3839,3840],{"class":118,"line":443},[116,3841,258],{"class":126},[116,3843,3844],{"class":118,"line":460},[116,3845,179],{"emptyLinePlaceholder":178},[116,3847,3848],{"class":118,"line":475},[116,3849,3850],{"class":184},"//2、类模板在模板参数列表中可以有默认参数\n",[116,3852,3853,3855,3857],{"class":118,"line":481},[116,3854,191],{"class":122},[116,3856,909],{"class":133},[116,3858,435],{"class":126},[116,3860,3861],{"class":118,"line":487},[116,3862,386],{"class":126},[116,3864,3865,3867,3869,3871,3873,3876,3878,3881,3883,3885,3887],{"class":118,"line":492},[116,3866,3061],{"class":126},[116,3868,127],{"class":122},[116,3870,2639],{"class":126},[116,3872,1133],{"class":122},[116,3874,3875],{"class":133}," p",[116,3877,197],{"class":126},[116,3879,3880],{"class":551},"\"猪八戒\"",[116,3882,207],{"class":126},[116,3884,3531],{"class":453},[116,3886,3825],{"class":126},[116,3888,3889],{"class":184}," //类模板中的模板参数列表 可以指定默认参数\n",[116,3891,3892,3894,3896],{"class":118,"line":498},[116,3893,3833],{"class":126},[116,3895,3541],{"class":133},[116,3897,620],{"class":126},[116,3899,3900],{"class":118,"line":504},[116,3901,258],{"class":126},[116,3903,3904],{"class":118,"line":513},[116,3905,179],{"emptyLinePlaceholder":178},[116,3907,3908,3910,3912],{"class":118,"line":518},[116,3909,531],{"class":122},[116,3911,603],{"class":133},[116,3913,606],{"class":126},[116,3915,3916],{"class":118,"line":524},[116,3917,179],{"emptyLinePlaceholder":178},[116,3919,3920,3922],{"class":118,"line":537},[116,3921,617],{"class":133},[116,3923,620],{"class":126},[116,3925,3926],{"class":118,"line":542},[116,3927,179],{"emptyLinePlaceholder":178},[116,3929,3930,3932],{"class":118,"line":565},[116,3931,969],{"class":133},[116,3933,620],{"class":126},[116,3935,3936],{"class":118,"line":583},[116,3937,179],{"emptyLinePlaceholder":178},[116,3939,3940],{"class":118,"line":588},[116,3941,179],{"emptyLinePlaceholder":178},[116,3943,3944,3946,3948],{"class":118,"line":593},[116,3945,636],{"class":122},[116,3947,639],{"class":453},[116,3949,457],{"class":126},[116,3951,3952],{"class":118,"line":598},[116,3953,258],{"class":126},[17,3955,3956,1696],{},[21,3957,148],{},[17,3959,654],{},[60,3961,3962,3965],{},[63,3963,3964],{},"类模板使用只能用显示指定类型方式",[63,3966,3967],{},"类模板中的模板参数列表可以有默认参数",[87,3969,3970],{"id":3970},"类模板中成员函数创建时机",[17,3972,3973],{},"类模板中成员函数和普通类中成员函数创建时机是有区别的：",[60,3975,3976,3979],{},[63,3977,3978],{},"普通类中的成员函数一开始就可以创建",[63,3980,3981],{},"类模板中的成员函数在调用时才创建",[17,3983,3984],{},[21,3985,168],{},[106,3987,3989],{"className":108,"code":3988,"language":110,"meta":111,"style":111},"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    //类模板中的成员函数，并不是一开始就创建的，而是在模板调用时再生成\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    //m.fun2();//编译会出错，说明函数调用才会去创建成员函数\n}\n\nint main() {\n\n    test01();\n\n\n    return 0;\n}\n",[113,3990,3991,3998,4002,4006,4015,4019,4032,4036,4040,4044,4051,4055,4059,4068,4072,4085,4089,4093,4097,4109,4116,4120,4124,4129,4133,4138,4142,4158,4172,4176,4180,4184,4192,4196,4211,4215,4225,4229,4234,4238,4242,4250,4254,4260,4264,4268,4276],{"__ignoreMap":111},[116,3992,3993,3995],{"class":118,"line":119},[116,3994,701],{"class":122},[116,3996,3997],{"class":133}," Person1\n",[116,3999,4000],{"class":118,"line":140},[116,4001,386],{"class":126},[116,4003,4004],{"class":118,"line":188},[116,4005,2629],{"class":122},[116,4007,4008,4010,4013],{"class":118,"line":218},[116,4009,2448],{"class":122},[116,4011,4012],{"class":133}," showPerson1",[116,4014,435],{"class":126},[116,4016,4017],{"class":118,"line":233},[116,4018,1204],{"class":126},[116,4020,4021,4023,4025,4028,4030],{"class":118,"line":244},[116,4022,1405],{"class":126},[116,4024,548],{"class":122},[116,4026,4027],{"class":551}," \"Person1 show\"",[116,4029,555],{"class":122},[116,4031,562],{"class":126},[116,4033,4034],{"class":118,"line":255},[116,4035,1335],{"class":126},[116,4037,4038],{"class":118,"line":261},[116,4039,2701],{"class":126},[116,4041,4042],{"class":118,"line":266},[116,4043,179],{"emptyLinePlaceholder":178},[116,4045,4046,4048],{"class":118,"line":272},[116,4047,701],{"class":122},[116,4049,4050],{"class":133}," Person2\n",[116,4052,4053],{"class":118,"line":295},[116,4054,386],{"class":126},[116,4056,4057],{"class":118,"line":307},[116,4058,2629],{"class":122},[116,4060,4061,4063,4066],{"class":118,"line":316},[116,4062,2448],{"class":122},[116,4064,4065],{"class":133}," showPerson2",[116,4067,435],{"class":126},[116,4069,4070],{"class":118,"line":325},[116,4071,1204],{"class":126},[116,4073,4074,4076,4078,4081,4083],{"class":118,"line":330},[116,4075,1405],{"class":126},[116,4077,548],{"class":122},[116,4079,4080],{"class":551}," \"Person2 show\"",[116,4082,555],{"class":122},[116,4084,562],{"class":126},[116,4086,4087],{"class":118,"line":335},[116,4088,1335],{"class":126},[116,4090,4091],{"class":118,"line":341},[116,4092,2701],{"class":126},[116,4094,4095],{"class":118,"line":354},[116,4096,179],{"emptyLinePlaceholder":178},[116,4098,4099,4101,4103,4105,4107],{"class":118,"line":383},[116,4100,123],{"class":122},[116,4102,127],{"class":126},[116,4104,701],{"class":122},[116,4106,134],{"class":133},[116,4108,137],{"class":126},[116,4110,4111,4113],{"class":118,"line":389},[116,4112,701],{"class":122},[116,4114,4115],{"class":133}," MyClass\n",[116,4117,4118],{"class":118,"line":399},[116,4119,386],{"class":126},[116,4121,4122],{"class":118,"line":408},[116,4123,2629],{"class":122},[116,4125,4126],{"class":118,"line":417},[116,4127,4128],{"class":126},"    T obj;\n",[116,4130,4131],{"class":118,"line":422},[116,4132,179],{"emptyLinePlaceholder":178},[116,4134,4135],{"class":118,"line":427},[116,4136,4137],{"class":184},"    //类模板中的成员函数，并不是一开始就创建的，而是在模板调用时再生成\n",[116,4139,4140],{"class":118,"line":438},[116,4141,179],{"emptyLinePlaceholder":178},[116,4143,4144,4146,4149,4152,4155],{"class":118,"line":443},[116,4145,2448],{"class":122},[116,4147,4148],{"class":133}," fun1",[116,4150,4151],{"class":126},"() { obj.",[116,4153,4154],{"class":133},"showPerson1",[116,4156,4157],{"class":126},"(); }\n",[116,4159,4160,4162,4165,4167,4170],{"class":118,"line":460},[116,4161,2448],{"class":122},[116,4163,4164],{"class":133}," fun2",[116,4166,4151],{"class":126},[116,4168,4169],{"class":133},"showPerson2",[116,4171,4157],{"class":126},[116,4173,4174],{"class":118,"line":475},[116,4175,179],{"emptyLinePlaceholder":178},[116,4177,4178],{"class":118,"line":481},[116,4179,2701],{"class":126},[116,4181,4182],{"class":118,"line":487},[116,4183,179],{"emptyLinePlaceholder":178},[116,4185,4186,4188,4190],{"class":118,"line":492},[116,4187,191],{"class":122},[116,4189,432],{"class":133},[116,4191,435],{"class":126},[116,4193,4194],{"class":118,"line":498},[116,4195,386],{"class":126},[116,4197,4198,4201,4203,4206,4208],{"class":118,"line":504},[116,4199,4200],{"class":126},"    MyClass",[116,4202,127],{"class":122},[116,4204,4205],{"class":126},"Person1",[116,4207,1133],{"class":122},[116,4209,4210],{"class":126}," m;\n",[116,4212,4213],{"class":118,"line":513},[116,4214,478],{"class":126},[116,4216,4217,4220,4223],{"class":118,"line":518},[116,4218,4219],{"class":126},"    m.",[116,4221,4222],{"class":133},"fun1",[116,4224,620],{"class":126},[116,4226,4227],{"class":118,"line":524},[116,4228,179],{"emptyLinePlaceholder":178},[116,4230,4231],{"class":118,"line":537},[116,4232,4233],{"class":184},"    //m.fun2();//编译会出错，说明函数调用才会去创建成员函数\n",[116,4235,4236],{"class":118,"line":542},[116,4237,258],{"class":126},[116,4239,4240],{"class":118,"line":565},[116,4241,179],{"emptyLinePlaceholder":178},[116,4243,4244,4246,4248],{"class":118,"line":583},[116,4245,531],{"class":122},[116,4247,603],{"class":133},[116,4249,606],{"class":126},[116,4251,4252],{"class":118,"line":588},[116,4253,179],{"emptyLinePlaceholder":178},[116,4255,4256,4258],{"class":118,"line":593},[116,4257,617],{"class":133},[116,4259,620],{"class":126},[116,4261,4262],{"class":118,"line":598},[116,4263,179],{"emptyLinePlaceholder":178},[116,4265,4266],{"class":118,"line":609},[116,4267,179],{"emptyLinePlaceholder":178},[116,4269,4270,4272,4274],{"class":118,"line":614},[116,4271,636],{"class":122},[116,4273,639],{"class":453},[116,4275,457],{"class":126},[116,4277,4278],{"class":118,"line":623},[116,4279,258],{"class":126},[17,4281,4282,651],{},[21,4283,148],{},[17,4285,4286],{},"总结：类模板中的成员函数并不是一开始就创建的，在调用时才去创建",[87,4288,4289],{"id":4289},"类模板对象做函数参数",[17,4291,4292],{},"学习目标：",[60,4294,4295],{},[63,4296,4297],{},"类模板实例化出的对象，向函数传参的方式",[17,4299,4300],{},"一共有三种传入方式：",[2004,4302,4303,4306,4309],{},[63,4304,4305],{},"指定传入的类型   --- 直接显示对象的数据类型",[63,4307,4308],{},"参数模板化           --- 将对象中的参数变为模板进行传递",[63,4310,4311],{},"整个类模板化       --- 将这个对象类型 模板化进行传递",[17,4313,4314],{},[21,4315,168],{},[106,4317,4319],{"className":108,"code":4318,"language":110,"meta":111,"style":111},"#include \u003Cstring>\n//类模板\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//1、指定传入的类型\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//2、参数模板化\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//3、整个类模板化\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",[113,4320,4321,4327,4331,4351,4357,4361,4365,4383,4387,4397,4407,4411,4419,4423,4451,4455,4459,4463,4467,4471,4475,4480,4508,4512,4520,4524,4532,4536,4562,4570,4574,4578,4583,4604,4633,4637,4645,4672,4696,4700,4708,4712,4737,4744,4748,4752,4757,4769,4786,4790,4814,4822,4826,4830,4839,4843,4869,4876,4880,4884,4892,4896,4902,4908,4915,4919,4923,4931],{"__ignoreMap":111},[116,4322,4323,4325],{"class":118,"line":119},[116,4324,2582],{"class":122},[116,4326,2609],{"class":551},[116,4328,4329],{"class":118,"line":140},[116,4330,3334],{"class":184},[116,4332,4333,4335,4337,4339,4341,4343,4345,4347,4349],{"class":118,"line":188},[116,4334,123],{"class":122},[116,4336,127],{"class":126},[116,4338,701],{"class":122},[116,4340,3345],{"class":133},[116,4342,207],{"class":126},[116,4344,701],{"class":122},[116,4346,3352],{"class":133},[116,4348,3648],{"class":122},[116,4350,3651],{"class":126},[116,4352,4353,4355],{"class":118,"line":218},[116,4354,701],{"class":122},[116,4356,2620],{"class":133},[116,4358,4359],{"class":118,"line":233},[116,4360,386],{"class":126},[116,4362,4363],{"class":118,"line":244},[116,4364,2629],{"class":122},[116,4366,4367,4369,4371,4373,4375,4377,4379,4381],{"class":118,"line":255},[116,4368,2634],{"class":133},[116,4370,197],{"class":126},[116,4372,3378],{"class":133},[116,4374,2642],{"class":203},[116,4376,207],{"class":126},[116,4378,3385],{"class":133},[116,4380,2649],{"class":203},[116,4382,380],{"class":126},[116,4384,4385],{"class":118,"line":261},[116,4386,1204],{"class":126},[116,4388,4389,4391,4393,4395],{"class":118,"line":266},[116,4390,2660],{"class":453},[116,4392,3400],{"class":126},[116,4394,227],{"class":122},[116,4396,2668],{"class":126},[116,4398,4399,4401,4403,4405],{"class":118,"line":272},[116,4400,2660],{"class":453},[116,4402,3411],{"class":126},[116,4404,227],{"class":122},[116,4406,2680],{"class":126},[116,4408,4409],{"class":118,"line":295},[116,4410,1335],{"class":126},[116,4412,4413,4415,4417],{"class":118,"line":307},[116,4414,2448],{"class":122},[116,4416,3426],{"class":133},[116,4418,435],{"class":126},[116,4420,4421],{"class":118,"line":316},[116,4422,1204],{"class":126},[116,4424,4425,4427,4429,4431,4433,4435,4437,4439,4441,4443,4445,4447,4449],{"class":118,"line":325},[116,4426,1405],{"class":126},[116,4428,548],{"class":122},[116,4430,3441],{"class":551},[116,4432,555],{"class":122},[116,4434,3446],{"class":453},[116,4436,3400],{"class":126},[116,4438,548],{"class":122},[116,4440,3453],{"class":551},[116,4442,555],{"class":122},[116,4444,3446],{"class":453},[116,4446,3411],{"class":126},[116,4448,548],{"class":122},[116,4450,562],{"class":126},[116,4452,4453],{"class":118,"line":330},[116,4454,1335],{"class":126},[116,4456,4457],{"class":118,"line":335},[116,4458,2629],{"class":122},[116,4460,4461],{"class":118,"line":341},[116,4462,3476],{"class":126},[116,4464,4465],{"class":118,"line":354},[116,4466,3481],{"class":126},[116,4468,4469],{"class":118,"line":383},[116,4470,2701],{"class":126},[116,4472,4473],{"class":118,"line":389},[116,4474,179],{"emptyLinePlaceholder":178},[116,4476,4477],{"class":118,"line":399},[116,4478,4479],{"class":184},"//1、指定传入的类型\n",[116,4481,4482,4484,4487,4489,4491,4493,4495,4497,4499,4502,4504,4506],{"class":118,"line":408},[116,4483,191],{"class":122},[116,4485,4486],{"class":133}," printPerson1",[116,4488,197],{"class":126},[116,4490,2840],{"class":133},[116,4492,127],{"class":126},[116,4494,2639],{"class":133},[116,4496,207],{"class":126},[116,4498,531],{"class":122},[116,4500,4501],{"class":126},"> ",[116,4503,367],{"class":122},[116,4505,17],{"class":203},[116,4507,2110],{"class":126},[116,4509,4510],{"class":118,"line":417},[116,4511,386],{"class":126},[116,4513,4514,4516,4518],{"class":118,"line":422},[116,4515,3833],{"class":126},[116,4517,3541],{"class":133},[116,4519,620],{"class":126},[116,4521,4522],{"class":118,"line":427},[116,4523,258],{"class":126},[116,4525,4526,4528,4530],{"class":118,"line":438},[116,4527,191],{"class":122},[116,4529,432],{"class":133},[116,4531,435],{"class":126},[116,4533,4534],{"class":118,"line":443},[116,4535,386],{"class":126},[116,4537,4538,4540,4542,4544,4546,4549,4551,4553,4555,4557,4560],{"class":118,"line":460},[116,4539,3061],{"class":126},[116,4541,127],{"class":122},[116,4543,3515],{"class":126},[116,4545,531],{"class":122},[116,4547,4548],{"class":122}," >",[116,4550,17],{"class":133},[116,4552,197],{"class":126},[116,4554,3526],{"class":551},[116,4556,207],{"class":126},[116,4558,4559],{"class":453},"100",[116,4561,1492],{"class":126},[116,4563,4564,4567],{"class":118,"line":475},[116,4565,4566],{"class":133},"    printPerson1",[116,4568,4569],{"class":126},"(p);\n",[116,4571,4572],{"class":118,"line":481},[116,4573,258],{"class":126},[116,4575,4576],{"class":118,"line":487},[116,4577,179],{"emptyLinePlaceholder":178},[116,4579,4580],{"class":118,"line":492},[116,4581,4582],{"class":184},"//2、参数模板化\n",[116,4584,4585,4587,4590,4592,4595,4597,4599,4602],{"class":118,"line":498},[116,4586,123],{"class":122},[116,4588,4589],{"class":126}," \u003C",[116,4591,701],{"class":122},[116,4593,4594],{"class":133}," T1",[116,4596,207],{"class":126},[116,4598,701],{"class":122},[116,4600,4601],{"class":133}," T2",[116,4603,137],{"class":126},[116,4605,4606,4608,4611,4613,4615,4617,4620,4622,4625,4627,4629,4631],{"class":118,"line":504},[116,4607,191],{"class":122},[116,4609,4610],{"class":133}," printPerson2",[116,4612,197],{"class":126},[116,4614,2840],{"class":133},[116,4616,127],{"class":126},[116,4618,4619],{"class":133},"T1",[116,4621,207],{"class":126},[116,4623,4624],{"class":133},"T2",[116,4626,1133],{"class":126},[116,4628,367],{"class":122},[116,4630,17],{"class":203},[116,4632,380],{"class":126},[116,4634,4635],{"class":118,"line":513},[116,4636,386],{"class":126},[116,4638,4639,4641,4643],{"class":118,"line":518},[116,4640,3833],{"class":126},[116,4642,3541],{"class":133},[116,4644,620],{"class":126},[116,4646,4647,4649,4651,4654,4656,4659,4662,4665,4668,4670],{"class":118,"line":524},[116,4648,545],{"class":126},[116,4650,548],{"class":122},[116,4652,4653],{"class":551}," \"T1的类型为： \"",[116,4655,555],{"class":122},[116,4657,4658],{"class":122}," typeid",[116,4660,4661],{"class":126},"(T1).",[116,4663,4664],{"class":133},"name",[116,4666,4667],{"class":126},"() ",[116,4669,548],{"class":122},[116,4671,562],{"class":126},[116,4673,4674,4676,4678,4681,4683,4685,4688,4690,4692,4694],{"class":118,"line":537},[116,4675,545],{"class":126},[116,4677,548],{"class":122},[116,4679,4680],{"class":551}," \"T2的类型为： \"",[116,4682,555],{"class":122},[116,4684,4658],{"class":122},[116,4686,4687],{"class":126},"(T2).",[116,4689,4664],{"class":133},[116,4691,4667],{"class":126},[116,4693,548],{"class":122},[116,4695,562],{"class":126},[116,4697,4698],{"class":118,"line":542},[116,4699,258],{"class":126},[116,4701,4702,4704,4706],{"class":118,"line":565},[116,4703,191],{"class":122},[116,4705,909],{"class":133},[116,4707,435],{"class":126},[116,4709,4710],{"class":118,"line":583},[116,4711,386],{"class":126},[116,4713,4714,4716,4718,4720,4722,4724,4726,4728,4730,4732,4735],{"class":118,"line":588},[116,4715,3061],{"class":126},[116,4717,127],{"class":122},[116,4719,3515],{"class":126},[116,4721,531],{"class":122},[116,4723,4548],{"class":122},[116,4725,17],{"class":133},[116,4727,197],{"class":126},[116,4729,3880],{"class":551},[116,4731,207],{"class":126},[116,4733,4734],{"class":453},"90",[116,4736,1492],{"class":126},[116,4738,4739,4742],{"class":118,"line":593},[116,4740,4741],{"class":133},"    printPerson2",[116,4743,4569],{"class":126},[116,4745,4746],{"class":118,"line":598},[116,4747,258],{"class":126},[116,4749,4750],{"class":118,"line":609},[116,4751,179],{"emptyLinePlaceholder":178},[116,4753,4754],{"class":118,"line":614},[116,4755,4756],{"class":184},"//3、整个类模板化\n",[116,4758,4759,4761,4763,4765,4767],{"class":118,"line":623},[116,4760,123],{"class":122},[116,4762,127],{"class":126},[116,4764,701],{"class":122},[116,4766,134],{"class":133},[116,4768,137],{"class":126},[116,4770,4771,4773,4776,4778,4780,4782,4784],{"class":118,"line":628},[116,4772,191],{"class":122},[116,4774,4775],{"class":133}," printPerson3",[116,4777,197],{"class":126},[116,4779,364],{"class":133},[116,4781,1070],{"class":122},[116,4783,3875],{"class":203},[116,4785,380],{"class":126},[116,4787,4788],{"class":118,"line":633},[116,4789,386],{"class":126},[116,4791,4792,4794,4796,4799,4801,4803,4806,4808,4810,4812],{"class":118,"line":644},[116,4793,545],{"class":126},[116,4795,548],{"class":122},[116,4797,4798],{"class":551}," \"T的类型为： \"",[116,4800,555],{"class":122},[116,4802,4658],{"class":122},[116,4804,4805],{"class":126},"(T).",[116,4807,4664],{"class":133},[116,4809,4667],{"class":126},[116,4811,548],{"class":122},[116,4813,562],{"class":126},[116,4815,4816,4818,4820],{"class":118,"line":1593},[116,4817,3833],{"class":126},[116,4819,3541],{"class":133},[116,4821,620],{"class":126},[116,4823,4824],{"class":118,"line":1617},[116,4825,179],{"emptyLinePlaceholder":178},[116,4827,4828],{"class":118,"line":1625},[116,4829,258],{"class":126},[116,4831,4832,4834,4837],{"class":118,"line":1632},[116,4833,191],{"class":122},[116,4835,4836],{"class":133}," test03",[116,4838,435],{"class":126},[116,4840,4841],{"class":118,"line":1637},[116,4842,386],{"class":126},[116,4844,4845,4847,4849,4851,4853,4855,4857,4859,4862,4864,4867],{"class":118,"line":1642},[116,4846,3061],{"class":126},[116,4848,127],{"class":122},[116,4850,3515],{"class":126},[116,4852,531],{"class":122},[116,4854,4548],{"class":122},[116,4856,17],{"class":133},[116,4858,197],{"class":126},[116,4860,4861],{"class":551},"\"唐僧\"",[116,4863,207],{"class":126},[116,4865,4866],{"class":453},"30",[116,4868,1492],{"class":126},[116,4870,4871,4874],{"class":118,"line":1651},[116,4872,4873],{"class":133},"    printPerson3",[116,4875,4569],{"class":126},[116,4877,4878],{"class":118,"line":1656},[116,4879,258],{"class":126},[116,4881,4882],{"class":118,"line":1663},[116,4883,179],{"emptyLinePlaceholder":178},[116,4885,4886,4888,4890],{"class":118,"line":1670},[116,4887,531],{"class":122},[116,4889,603],{"class":133},[116,4891,606],{"class":126},[116,4893,4894],{"class":118,"line":1675},[116,4895,179],{"emptyLinePlaceholder":178},[116,4897,4898,4900],{"class":118,"line":1680},[116,4899,617],{"class":133},[116,4901,620],{"class":126},[116,4903,4904,4906],{"class":118,"line":1689},[116,4905,969],{"class":133},[116,4907,620],{"class":126},[116,4909,4910,4913],{"class":118,"line":3058},[116,4911,4912],{"class":133},"    test03",[116,4914,620],{"class":126},[116,4916,4917],{"class":118,"line":3078},[116,4918,179],{"emptyLinePlaceholder":178},[116,4920,4921],{"class":118,"line":3095},[116,4922,179],{"emptyLinePlaceholder":178},[116,4924,4925,4927,4929],{"class":118,"line":3101},[116,4926,636],{"class":122},[116,4928,639],{"class":453},[116,4930,457],{"class":126},[116,4932,4933],{"class":118,"line":3107},[116,4934,258],{"class":126},[17,4936,4937,1696],{},[21,4938,148],{},[17,4940,654],{},[60,4942,4943,4946],{},[63,4944,4945],{},"通过类模板创建的对象，可以有三种方式向函数中进行传参",[63,4947,4948],{},"使用比较广泛是第一种：指定传入的类型",[87,4950,4951],{"id":4951},"类模板与继承",[17,4953,4954],{},"当类模板碰到继承时，需要注意一下几点：",[60,4956,4957,4960,4963],{},[63,4958,4959],{},"当子类继承的父类是一个类模板时，子类在声明的时候，要指定出父类中T的类型",[63,4961,4962],{},"如果不指定，编译器无法给子类分配内存",[63,4964,4965],{},"如果想灵活指定出父类中T的类型，子类也需变为类模板",[17,4967,4968],{},[21,4969,168],{},[106,4971,4973],{"className":108,"code":4972,"language":110,"meta":111,"style":111},"template\u003Cclass T>\nclass Base\n{\n    T m;\n};\n\n//class Son:public Base  //错误，c++编译需要给子类分配内存，必须知道父类中T的类型才可以向下继承\nclass Son :public Base\u003Cint> //必须指定一个类型\n{\n};\nvoid test01()\n{\n    Son c;\n}\n\n//类模板继承类模板 ,可以用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",[113,4974,4975,4987,4994,4998,5003,5007,5011,5019,5044,5048,5052,5060,5064,5069,5073,5077,5082,5100,5119,5123,5127,5134,5138,5156,5174,5178,5182,5186,5194,5198,5213,5217,5221,5229,5233,5239,5243,5249,5253,5257,5265],{"__ignoreMap":111},[116,4976,4977,4979,4981,4983,4985],{"class":118,"line":119},[116,4978,123],{"class":122},[116,4980,127],{"class":126},[116,4982,701],{"class":122},[116,4984,134],{"class":133},[116,4986,137],{"class":126},[116,4988,4989,4991],{"class":118,"line":140},[116,4990,701],{"class":122},[116,4992,4993],{"class":133}," Base\n",[116,4995,4996],{"class":118,"line":188},[116,4997,386],{"class":126},[116,4999,5000],{"class":118,"line":218},[116,5001,5002],{"class":126},"    T m;\n",[116,5004,5005],{"class":118,"line":233},[116,5006,2701],{"class":126},[116,5008,5009],{"class":118,"line":244},[116,5010,179],{"emptyLinePlaceholder":178},[116,5012,5013,5016],{"class":118,"line":255},[116,5014,5015],{"class":184},"//class Son:public Base",[116,5017,5018],{"class":184},"  //错误，c++编译需要给子类分配内存，必须知道父类中T的类型才可以向下继承\n",[116,5020,5021,5023,5026,5029,5032,5035,5037,5039,5041],{"class":118,"line":261},[116,5022,701],{"class":122},[116,5024,5025],{"class":133}," Son",[116,5027,5028],{"class":126}," :",[116,5030,5031],{"class":122},"public",[116,5033,5034],{"class":133}," Base",[116,5036,127],{"class":126},[116,5038,531],{"class":122},[116,5040,1133],{"class":126},[116,5042,5043],{"class":184}," //必须指定一个类型\n",[116,5045,5046],{"class":118,"line":266},[116,5047,386],{"class":126},[116,5049,5050],{"class":118,"line":272},[116,5051,2701],{"class":126},[116,5053,5054,5056,5058],{"class":118,"line":295},[116,5055,191],{"class":122},[116,5057,432],{"class":133},[116,5059,435],{"class":126},[116,5061,5062],{"class":118,"line":307},[116,5063,386],{"class":126},[116,5065,5066],{"class":118,"line":316},[116,5067,5068],{"class":126},"    Son c;\n",[116,5070,5071],{"class":118,"line":325},[116,5072,258],{"class":126},[116,5074,5075],{"class":118,"line":330},[116,5076,179],{"emptyLinePlaceholder":178},[116,5078,5079],{"class":118,"line":335},[116,5080,5081],{"class":184},"//类模板继承类模板 ,可以用T2指定父类中的T类型\n",[116,5083,5084,5086,5088,5090,5092,5094,5096,5098],{"class":118,"line":341},[116,5085,123],{"class":122},[116,5087,127],{"class":126},[116,5089,701],{"class":122},[116,5091,4594],{"class":133},[116,5093,207],{"class":126},[116,5095,701],{"class":122},[116,5097,4601],{"class":133},[116,5099,137],{"class":126},[116,5101,5102,5104,5107,5109,5111,5113,5115,5117],{"class":118,"line":354},[116,5103,701],{"class":122},[116,5105,5106],{"class":133}," Son2",[116,5108,5028],{"class":126},[116,5110,5031],{"class":122},[116,5112,5034],{"class":133},[116,5114,127],{"class":126},[116,5116,4624],{"class":133},[116,5118,137],{"class":126},[116,5120,5121],{"class":118,"line":383},[116,5122,386],{"class":126},[116,5124,5125],{"class":118,"line":389},[116,5126,2629],{"class":122},[116,5128,5129,5132],{"class":118,"line":399},[116,5130,5131],{"class":133},"    Son2",[116,5133,435],{"class":126},[116,5135,5136],{"class":118,"line":408},[116,5137,1204],{"class":126},[116,5139,5140,5142,5144,5146,5148,5150,5152,5154],{"class":118,"line":417},[116,5141,1405],{"class":126},[116,5143,548],{"class":122},[116,5145,4658],{"class":122},[116,5147,4661],{"class":126},[116,5149,4664],{"class":133},[116,5151,4667],{"class":126},[116,5153,548],{"class":122},[116,5155,562],{"class":126},[116,5157,5158,5160,5162,5164,5166,5168,5170,5172],{"class":118,"line":422},[116,5159,1405],{"class":126},[116,5161,548],{"class":122},[116,5163,4658],{"class":122},[116,5165,4687],{"class":126},[116,5167,4664],{"class":133},[116,5169,4667],{"class":126},[116,5171,548],{"class":122},[116,5173,562],{"class":126},[116,5175,5176],{"class":118,"line":427},[116,5177,1335],{"class":126},[116,5179,5180],{"class":118,"line":438},[116,5181,2701],{"class":126},[116,5183,5184],{"class":118,"line":443},[116,5185,179],{"emptyLinePlaceholder":178},[116,5187,5188,5190,5192],{"class":118,"line":460},[116,5189,191],{"class":122},[116,5191,909],{"class":133},[116,5193,435],{"class":126},[116,5195,5196],{"class":118,"line":475},[116,5197,386],{"class":126},[116,5199,5200,5202,5205,5207,5210],{"class":118,"line":481},[116,5201,5131],{"class":126},[116,5203,5204],{"class":122},"\u003Cint",[116,5206,207],{"class":126},[116,5208,5209],{"class":122},"char>",[116,5211,5212],{"class":126}," child1;\n",[116,5214,5215],{"class":118,"line":487},[116,5216,258],{"class":126},[116,5218,5219],{"class":118,"line":492},[116,5220,179],{"emptyLinePlaceholder":178},[116,5222,5223,5225,5227],{"class":118,"line":498},[116,5224,531],{"class":122},[116,5226,603],{"class":133},[116,5228,606],{"class":126},[116,5230,5231],{"class":118,"line":504},[116,5232,179],{"emptyLinePlaceholder":178},[116,5234,5235,5237],{"class":118,"line":513},[116,5236,617],{"class":133},[116,5238,620],{"class":126},[116,5240,5241],{"class":118,"line":518},[116,5242,179],{"emptyLinePlaceholder":178},[116,5244,5245,5247],{"class":118,"line":524},[116,5246,969],{"class":133},[116,5248,620],{"class":126},[116,5250,5251],{"class":118,"line":537},[116,5252,179],{"emptyLinePlaceholder":178},[116,5254,5255],{"class":118,"line":542},[116,5256,179],{"emptyLinePlaceholder":178},[116,5258,5259,5261,5263],{"class":118,"line":565},[116,5260,636],{"class":122},[116,5262,639],{"class":453},[116,5264,457],{"class":126},[116,5266,5267],{"class":118,"line":583},[116,5268,258],{"class":126},[17,5270,5271,651],{},[21,5272,148],{},[17,5274,5275],{},"总结：如果父类是类模板，子类需要指定出父类中T的数据类型",[87,5277,5278],{"id":5278},"类模板成员函数类外实现",[17,5280,5281],{},"学习目标：能够掌握类模板中的成员函数类外实现",[17,5283,5284],{},[21,5285,168],{},[106,5287,5289],{"className":108,"code":5288,"language":110,"meta":111,"style":111},"#include \u003Cstring>\n\n//类模板中成员函数类外实现\ntemplate\u003Cclass T1, class T2>\nclass Person {\npublic:\n    //成员函数类内声明\n    Person(T1 name, T2 age);\n    void showPerson();\n\npublic:\n    T1 m_Name;\n    T2 m_Age;\n};\n\n//构造函数 类外实现\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//成员函数 类外实现\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",[113,5290,5291,5297,5301,5306,5324,5334,5338,5343,5361,5369,5373,5377,5382,5387,5391,5395,5400,5418,5438,5449,5459,5463,5467,5472,5490,5510,5540,5544,5548,5556,5560,5583,5591,5595,5599,5607,5611,5617,5621,5625,5633],{"__ignoreMap":111},[116,5292,5293,5295],{"class":118,"line":119},[116,5294,2582],{"class":122},[116,5296,2609],{"class":551},[116,5298,5299],{"class":118,"line":140},[116,5300,179],{"emptyLinePlaceholder":178},[116,5302,5303],{"class":118,"line":188},[116,5304,5305],{"class":184},"//类模板中成员函数类外实现\n",[116,5307,5308,5310,5312,5314,5316,5318,5320,5322],{"class":118,"line":218},[116,5309,123],{"class":122},[116,5311,127],{"class":126},[116,5313,701],{"class":122},[116,5315,4594],{"class":133},[116,5317,207],{"class":126},[116,5319,701],{"class":122},[116,5321,4601],{"class":133},[116,5323,137],{"class":126},[116,5325,5326,5328,5331],{"class":118,"line":233},[116,5327,701],{"class":122},[116,5329,5330],{"class":133}," Person",[116,5332,5333],{"class":126}," {\n",[116,5335,5336],{"class":118,"line":244},[116,5337,2629],{"class":122},[116,5339,5340],{"class":118,"line":255},[116,5341,5342],{"class":184},"    //成员函数类内声明\n",[116,5344,5345,5347,5349,5351,5353,5355,5357,5359],{"class":118,"line":261},[116,5346,2634],{"class":133},[116,5348,197],{"class":126},[116,5350,4619],{"class":133},[116,5352,2642],{"class":203},[116,5354,207],{"class":126},[116,5356,4624],{"class":133},[116,5358,2649],{"class":203},[116,5360,1492],{"class":126},[116,5362,5363,5365,5367],{"class":118,"line":266},[116,5364,2448],{"class":122},[116,5366,3426],{"class":133},[116,5368,620],{"class":126},[116,5370,5371],{"class":118,"line":272},[116,5372,179],{"emptyLinePlaceholder":178},[116,5374,5375],{"class":118,"line":295},[116,5376,2629],{"class":122},[116,5378,5379],{"class":118,"line":307},[116,5380,5381],{"class":126},"    T1 m_Name;\n",[116,5383,5384],{"class":118,"line":316},[116,5385,5386],{"class":126},"    T2 m_Age;\n",[116,5388,5389],{"class":118,"line":325},[116,5390,2701],{"class":126},[116,5392,5393],{"class":118,"line":330},[116,5394,179],{"emptyLinePlaceholder":178},[116,5396,5397],{"class":118,"line":335},[116,5398,5399],{"class":184},"//构造函数 类外实现\n",[116,5401,5402,5404,5406,5408,5410,5412,5414,5416],{"class":118,"line":341},[116,5403,123],{"class":122},[116,5405,127],{"class":126},[116,5407,701],{"class":122},[116,5409,4594],{"class":133},[116,5411,207],{"class":126},[116,5413,701],{"class":122},[116,5415,4601],{"class":133},[116,5417,137],{"class":126},[116,5419,5420,5422,5424,5426,5428,5430,5433,5435],{"class":118,"line":354},[116,5421,2840],{"class":133},[116,5423,127],{"class":126},[116,5425,4619],{"class":133},[116,5427,207],{"class":126},[116,5429,4624],{"class":133},[116,5431,5432],{"class":126},">::",[116,5434,2840],{"class":133},[116,5436,5437],{"class":126},"(T1 name, T2 age) {\n",[116,5439,5440,5443,5445,5447],{"class":118,"line":383},[116,5441,5442],{"class":453},"    this",[116,5444,2663],{"class":126},[116,5446,227],{"class":122},[116,5448,2668],{"class":126},[116,5450,5451,5453,5455,5457],{"class":118,"line":389},[116,5452,5442],{"class":453},[116,5454,2675],{"class":126},[116,5456,227],{"class":122},[116,5458,2680],{"class":126},[116,5460,5461],{"class":118,"line":399},[116,5462,258],{"class":126},[116,5464,5465],{"class":118,"line":408},[116,5466,179],{"emptyLinePlaceholder":178},[116,5468,5469],{"class":118,"line":417},[116,5470,5471],{"class":184},"//成员函数 类外实现\n",[116,5473,5474,5476,5478,5480,5482,5484,5486,5488],{"class":118,"line":422},[116,5475,123],{"class":122},[116,5477,127],{"class":126},[116,5479,701],{"class":122},[116,5481,4594],{"class":133},[116,5483,207],{"class":126},[116,5485,701],{"class":122},[116,5487,4601],{"class":133},[116,5489,137],{"class":126},[116,5491,5492,5494,5496,5498,5500,5502,5504,5506,5508],{"class":118,"line":427},[116,5493,191],{"class":122},[116,5495,5330],{"class":133},[116,5497,127],{"class":126},[116,5499,4619],{"class":133},[116,5501,207],{"class":126},[116,5503,4624],{"class":133},[116,5505,5432],{"class":126},[116,5507,3541],{"class":133},[116,5509,606],{"class":126},[116,5511,5512,5514,5516,5519,5521,5523,5525,5527,5530,5532,5534,5536,5538],{"class":118,"line":438},[116,5513,545],{"class":126},[116,5515,548],{"class":122},[116,5517,5518],{"class":551}," \"姓名: \"",[116,5520,555],{"class":122},[116,5522,3446],{"class":453},[116,5524,2663],{"class":126},[116,5526,548],{"class":122},[116,5528,5529],{"class":551}," \" 年龄:\"",[116,5531,555],{"class":122},[116,5533,3446],{"class":453},[116,5535,2675],{"class":126},[116,5537,548],{"class":122},[116,5539,562],{"class":126},[116,5541,5542],{"class":118,"line":443},[116,5543,258],{"class":126},[116,5545,5546],{"class":118,"line":460},[116,5547,179],{"emptyLinePlaceholder":178},[116,5549,5550,5552,5554],{"class":118,"line":475},[116,5551,191],{"class":122},[116,5553,432],{"class":133},[116,5555,435],{"class":126},[116,5557,5558],{"class":118,"line":481},[116,5559,386],{"class":126},[116,5561,5562,5564,5566,5568,5570,5572,5574,5576,5578,5581],{"class":118,"line":487},[116,5563,2634],{"class":126},[116,5565,127],{"class":122},[116,5567,3515],{"class":126},[116,5569,3518],{"class":122},[116,5571,3875],{"class":133},[116,5573,197],{"class":126},[116,5575,3068],{"class":551},[116,5577,207],{"class":126},[116,5579,5580],{"class":453},"20",[116,5582,1492],{"class":126},[116,5584,5585,5587,5589],{"class":118,"line":492},[116,5586,3833],{"class":126},[116,5588,3541],{"class":133},[116,5590,620],{"class":126},[116,5592,5593],{"class":118,"line":498},[116,5594,258],{"class":126},[116,5596,5597],{"class":118,"line":504},[116,5598,179],{"emptyLinePlaceholder":178},[116,5600,5601,5603,5605],{"class":118,"line":513},[116,5602,531],{"class":122},[116,5604,603],{"class":133},[116,5606,606],{"class":126},[116,5608,5609],{"class":118,"line":518},[116,5610,179],{"emptyLinePlaceholder":178},[116,5612,5613,5615],{"class":118,"line":524},[116,5614,617],{"class":133},[116,5616,620],{"class":126},[116,5618,5619],{"class":118,"line":537},[116,5620,179],{"emptyLinePlaceholder":178},[116,5622,5623],{"class":118,"line":542},[116,5624,179],{"emptyLinePlaceholder":178},[116,5626,5627,5629,5631],{"class":118,"line":565},[116,5628,636],{"class":122},[116,5630,639],{"class":453},[116,5632,457],{"class":126},[116,5634,5635],{"class":118,"line":583},[116,5636,258],{"class":126},[17,5638,5639,1696],{},[21,5640,148],{},[17,5642,5643],{},"总结：类模板中成员函数类外实现时，需要加上模板参数列表",[87,5645,5646],{"id":5646},"类模板分文件编写",[17,5648,4292],{},[60,5650,5651],{},[63,5652,5653],{},"掌握类模板成员函数分文件编写产生的问题以及解决方式",[17,5655,5656],{},"问题：",[60,5658,5659],{},[63,5660,5661],{},"类模板中成员函数创建时机是在调用阶段，导致分文件编写时链接不到",[17,5663,5664],{},"解决：",[60,5666,5667,5670],{},[63,5668,5669],{},"解决方式1：直接包含.cpp源文件",[63,5671,5672],{},"解决方式2：将声明和实现写到同一个文件中，并更改后缀名为.hpp，hpp是约定的名称，并不是强制",[17,5674,5675],{},[21,5676,168],{},[17,5678,5679],{},"person.hpp中代码：",[106,5681,5683],{"className":108,"code":5682,"language":110,"meta":111,"style":111},"#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//构造函数 类外实现\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//成员函数 类外实现\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",[113,5684,5685,5693,5700,5710,5716,5720,5738,5746,5750,5768,5776,5780,5784,5788,5792,5796,5800,5818,5836,5846,5856,5860,5864,5868,5886,5906,5934],{"__ignoreMap":111},[116,5686,5687,5690],{"class":118,"line":119},[116,5688,5689],{"class":122},"#pragma",[116,5691,5692],{"class":133}," once\n",[116,5694,5695,5697],{"class":118,"line":140},[116,5696,2582],{"class":122},[116,5698,5699],{"class":551}," \u003Ciostream>\n",[116,5701,5702,5704,5706,5708],{"class":118,"line":188},[116,5703,2590],{"class":122},[116,5705,2593],{"class":122},[116,5707,2596],{"class":133},[116,5709,457],{"class":126},[116,5711,5712,5714],{"class":118,"line":218},[116,5713,2582],{"class":122},[116,5715,2609],{"class":551},[116,5717,5718],{"class":118,"line":233},[116,5719,179],{"emptyLinePlaceholder":178},[116,5721,5722,5724,5726,5728,5730,5732,5734,5736],{"class":118,"line":244},[116,5723,123],{"class":122},[116,5725,127],{"class":126},[116,5727,701],{"class":122},[116,5729,4594],{"class":133},[116,5731,207],{"class":126},[116,5733,701],{"class":122},[116,5735,4601],{"class":133},[116,5737,137],{"class":126},[116,5739,5740,5742,5744],{"class":118,"line":255},[116,5741,701],{"class":122},[116,5743,5330],{"class":133},[116,5745,5333],{"class":126},[116,5747,5748],{"class":118,"line":261},[116,5749,2629],{"class":122},[116,5751,5752,5754,5756,5758,5760,5762,5764,5766],{"class":118,"line":266},[116,5753,2634],{"class":133},[116,5755,197],{"class":126},[116,5757,4619],{"class":133},[116,5759,2642],{"class":203},[116,5761,207],{"class":126},[116,5763,4624],{"class":133},[116,5765,2649],{"class":203},[116,5767,1492],{"class":126},[116,5769,5770,5772,5774],{"class":118,"line":272},[116,5771,2448],{"class":122},[116,5773,3426],{"class":133},[116,5775,620],{"class":126},[116,5777,5778],{"class":118,"line":295},[116,5779,2629],{"class":122},[116,5781,5782],{"class":118,"line":307},[116,5783,5381],{"class":126},[116,5785,5786],{"class":118,"line":316},[116,5787,5386],{"class":126},[116,5789,5790],{"class":118,"line":325},[116,5791,2701],{"class":126},[116,5793,5794],{"class":118,"line":330},[116,5795,179],{"emptyLinePlaceholder":178},[116,5797,5798],{"class":118,"line":335},[116,5799,5399],{"class":184},[116,5801,5802,5804,5806,5808,5810,5812,5814,5816],{"class":118,"line":341},[116,5803,123],{"class":122},[116,5805,127],{"class":126},[116,5807,701],{"class":122},[116,5809,4594],{"class":133},[116,5811,207],{"class":126},[116,5813,701],{"class":122},[116,5815,4601],{"class":133},[116,5817,137],{"class":126},[116,5819,5820,5822,5824,5826,5828,5830,5832,5834],{"class":118,"line":354},[116,5821,2840],{"class":133},[116,5823,127],{"class":126},[116,5825,4619],{"class":133},[116,5827,207],{"class":126},[116,5829,4624],{"class":133},[116,5831,5432],{"class":126},[116,5833,2840],{"class":133},[116,5835,5437],{"class":126},[116,5837,5838,5840,5842,5844],{"class":118,"line":383},[116,5839,5442],{"class":453},[116,5841,2663],{"class":126},[116,5843,227],{"class":122},[116,5845,2668],{"class":126},[116,5847,5848,5850,5852,5854],{"class":118,"line":389},[116,5849,5442],{"class":453},[116,5851,2675],{"class":126},[116,5853,227],{"class":122},[116,5855,2680],{"class":126},[116,5857,5858],{"class":118,"line":399},[116,5859,258],{"class":126},[116,5861,5862],{"class":118,"line":408},[116,5863,179],{"emptyLinePlaceholder":178},[116,5865,5866],{"class":118,"line":417},[116,5867,5471],{"class":184},[116,5869,5870,5872,5874,5876,5878,5880,5882,5884],{"class":118,"line":422},[116,5871,123],{"class":122},[116,5873,127],{"class":126},[116,5875,701],{"class":122},[116,5877,4594],{"class":133},[116,5879,207],{"class":126},[116,5881,701],{"class":122},[116,5883,4601],{"class":133},[116,5885,137],{"class":126},[116,5887,5888,5890,5892,5894,5896,5898,5900,5902,5904],{"class":118,"line":427},[116,5889,191],{"class":122},[116,5891,5330],{"class":133},[116,5893,127],{"class":126},[116,5895,4619],{"class":133},[116,5897,207],{"class":126},[116,5899,4624],{"class":133},[116,5901,5432],{"class":126},[116,5903,3541],{"class":133},[116,5905,606],{"class":126},[116,5907,5908,5910,5912,5914,5916,5918,5920,5922,5924,5926,5928,5930,5932],{"class":118,"line":438},[116,5909,545],{"class":126},[116,5911,548],{"class":122},[116,5913,5518],{"class":551},[116,5915,555],{"class":122},[116,5917,3446],{"class":453},[116,5919,2663],{"class":126},[116,5921,548],{"class":122},[116,5923,5529],{"class":551},[116,5925,555],{"class":122},[116,5927,3446],{"class":453},[116,5929,2675],{"class":126},[116,5931,548],{"class":122},[116,5933,562],{"class":126},[116,5935,5936],{"class":118,"line":443},[116,5937,258],{"class":126},[17,5939,5940,1696],{},[21,5941,148],{},[17,5943,5944],{},"类模板分文件编写.cpp中代码",[106,5946,5948],{"className":108,"code":5947,"language":110,"meta":111,"style":111},"#include\u003Ciostream>\nusing namespace std;\n\n//#include \"person.h\"\n#include \"person.cpp\" //解决方式1，包含cpp源文件\n\n//解决方式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",[113,5949,5950,5956,5966,5970,5975,5985,5989,5994,6001,6009,6013,6035,6043,6047,6051,6059,6063,6069,6073,6077,6085],{"__ignoreMap":111},[116,5951,5952,5954],{"class":118,"line":119},[116,5953,2582],{"class":122},[116,5955,2585],{"class":551},[116,5957,5958,5960,5962,5964],{"class":118,"line":140},[116,5959,2590],{"class":122},[116,5961,2593],{"class":122},[116,5963,2596],{"class":133},[116,5965,457],{"class":126},[116,5967,5968],{"class":118,"line":188},[116,5969,179],{"emptyLinePlaceholder":178},[116,5971,5972],{"class":118,"line":218},[116,5973,5974],{"class":184},"//#include \"person.h\"\n",[116,5976,5977,5979,5982],{"class":118,"line":233},[116,5978,2582],{"class":122},[116,5980,5981],{"class":551}," \"person.cpp\"",[116,5983,5984],{"class":184}," //解决方式1，包含cpp源文件\n",[116,5986,5987],{"class":118,"line":244},[116,5988,179],{"emptyLinePlaceholder":178},[116,5990,5991],{"class":118,"line":255},[116,5992,5993],{"class":184},"//解决方式2，将声明和实现写到一起，文件后缀名改为.hpp\n",[116,5995,5996,5998],{"class":118,"line":261},[116,5997,2582],{"class":122},[116,5999,6000],{"class":551}," \"person.hpp\"\n",[116,6002,6003,6005,6007],{"class":118,"line":266},[116,6004,191],{"class":122},[116,6006,432],{"class":133},[116,6008,435],{"class":126},[116,6010,6011],{"class":118,"line":272},[116,6012,386],{"class":126},[116,6014,6015,6017,6019,6021,6023,6025,6027,6029,6031,6033],{"class":118,"line":295},[116,6016,2634],{"class":126},[116,6018,127],{"class":122},[116,6020,3515],{"class":126},[116,6022,3518],{"class":122},[116,6024,3875],{"class":133},[116,6026,197],{"class":126},[116,6028,3068],{"class":551},[116,6030,207],{"class":126},[116,6032,3073],{"class":453},[116,6034,1492],{"class":126},[116,6036,6037,6039,6041],{"class":118,"line":307},[116,6038,3833],{"class":126},[116,6040,3541],{"class":133},[116,6042,620],{"class":126},[116,6044,6045],{"class":118,"line":316},[116,6046,258],{"class":126},[116,6048,6049],{"class":118,"line":325},[116,6050,179],{"emptyLinePlaceholder":178},[116,6052,6053,6055,6057],{"class":118,"line":330},[116,6054,531],{"class":122},[116,6056,603],{"class":133},[116,6058,606],{"class":126},[116,6060,6061],{"class":118,"line":335},[116,6062,179],{"emptyLinePlaceholder":178},[116,6064,6065,6067],{"class":118,"line":341},[116,6066,617],{"class":133},[116,6068,620],{"class":126},[116,6070,6071],{"class":118,"line":354},[116,6072,179],{"emptyLinePlaceholder":178},[116,6074,6075],{"class":118,"line":383},[116,6076,179],{"emptyLinePlaceholder":178},[116,6078,6079,6081,6083],{"class":118,"line":389},[116,6080,636],{"class":122},[116,6082,639],{"class":453},[116,6084,457],{"class":126},[116,6086,6087],{"class":118,"line":399},[116,6088,258],{"class":126},[17,6090,6091,149],{},[21,6092,148],{},[17,6094,6095],{},"总结：主流的解决方式是第二种，将类模板成员函数写到一起，并将后缀名改为.hpp",[87,6097,6098],{"id":6098},"类模板与友元",[17,6100,4292],{},[60,6102,6103],{},[63,6104,6105],{},"掌握类模板配合友元函数的类内和类外实现",[17,6107,6108],{},"全局函数类内实现 - 直接在类内声明友元即可",[17,6110,6111],{},"全局函数类外实现 - 需要提前让编译器知道全局函数的存在",[17,6113,6114],{},[21,6115,168],{},[106,6117,6119],{"className":108,"code":6118,"language":110,"meta":111,"style":111},"#include \u003Cstring>\n\n//2、全局函数配合友元  类外实现 - 先做函数模板声明，下方在做函数模板定义，在做友元\ntemplate\u003Cclass T1, class T2> class Person;\n\n//如果声明了函数模板，可以将实现写到后面，否则需要将实现体写到类的前面让编译器提前看到\n//template\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    //1、全局函数配合友元   类内实现\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    //全局函数配合友元  类外实现\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//1、全局函数在类内实现\nvoid test01()\n{\n    Person \u003Cstring, int >p(\"Tom\", 20);\n    printPerson(p);\n}\n\n//2、全局函数在类外实现\nvoid test02()\n{\n    Person \u003Cstring, int >p(\"Jerry\", 30);\n    printPerson2(p);\n}\n\nint main() {\n\n    //test01();\n\n    test02();\n\n\n    return 0;\n}\n",[113,6120,6121,6127,6131,6136,6160,6164,6169,6174,6178,6196,6222,6226,6254,6258,6262,6280,6286,6290,6295,6326,6330,6355,6359,6363,6368,6391,6395,6399,6403,6421,6425,6435,6445,6449,6453,6458,6462,6466,6470,6474,6478,6483,6491,6495,6519,6526,6530,6534,6539,6547,6551,6576,6582,6586,6590,6598,6602,6607,6611,6617,6621,6625,6633],{"__ignoreMap":111},[116,6122,6123,6125],{"class":118,"line":119},[116,6124,2582],{"class":122},[116,6126,2609],{"class":551},[116,6128,6129],{"class":118,"line":140},[116,6130,179],{"emptyLinePlaceholder":178},[116,6132,6133],{"class":118,"line":188},[116,6134,6135],{"class":184},"//2、全局函数配合友元  类外实现 - 先做函数模板声明，下方在做函数模板定义，在做友元\n",[116,6137,6138,6140,6142,6144,6146,6148,6150,6152,6154,6156,6158],{"class":118,"line":218},[116,6139,123],{"class":122},[116,6141,127],{"class":126},[116,6143,701],{"class":122},[116,6145,4594],{"class":133},[116,6147,207],{"class":126},[116,6149,701],{"class":122},[116,6151,4601],{"class":133},[116,6153,4501],{"class":126},[116,6155,701],{"class":122},[116,6157,5330],{"class":133},[116,6159,457],{"class":126},[116,6161,6162],{"class":118,"line":233},[116,6163,179],{"emptyLinePlaceholder":178},[116,6165,6166],{"class":118,"line":244},[116,6167,6168],{"class":184},"//如果声明了函数模板，可以将实现写到后面，否则需要将实现体写到类的前面让编译器提前看到\n",[116,6170,6171],{"class":118,"line":255},[116,6172,6173],{"class":184},"//template\u003Cclass T1, class T2> void printPerson2(Person\u003CT1, T2> & p); \n",[116,6175,6176],{"class":118,"line":261},[116,6177,179],{"emptyLinePlaceholder":178},[116,6179,6180,6182,6184,6186,6188,6190,6192,6194],{"class":118,"line":266},[116,6181,123],{"class":122},[116,6183,127],{"class":126},[116,6185,701],{"class":122},[116,6187,4594],{"class":133},[116,6189,207],{"class":126},[116,6191,701],{"class":122},[116,6193,4601],{"class":133},[116,6195,137],{"class":126},[116,6197,6198,6200,6202,6204,6206,6208,6210,6212,6214,6216,6218,6220],{"class":118,"line":272},[116,6199,191],{"class":122},[116,6201,4610],{"class":133},[116,6203,197],{"class":126},[116,6205,2840],{"class":133},[116,6207,127],{"class":126},[116,6209,4619],{"class":133},[116,6211,207],{"class":126},[116,6213,4624],{"class":133},[116,6215,4501],{"class":126},[116,6217,367],{"class":122},[116,6219,3875],{"class":203},[116,6221,380],{"class":126},[116,6223,6224],{"class":118,"line":295},[116,6225,386],{"class":126},[116,6227,6228,6230,6232,6235,6237,6240,6242,6245,6247,6250,6252],{"class":118,"line":307},[116,6229,545],{"class":126},[116,6231,548],{"class":122},[116,6233,6234],{"class":551}," \"类外实现 ---- 姓名： \"",[116,6236,555],{"class":122},[116,6238,6239],{"class":126}," p.m_Name ",[116,6241,548],{"class":122},[116,6243,6244],{"class":551}," \" 年龄：\"",[116,6246,555],{"class":122},[116,6248,6249],{"class":126}," p.m_Age ",[116,6251,548],{"class":122},[116,6253,562],{"class":126},[116,6255,6256],{"class":118,"line":316},[116,6257,258],{"class":126},[116,6259,6260],{"class":118,"line":325},[116,6261,179],{"emptyLinePlaceholder":178},[116,6263,6264,6266,6268,6270,6272,6274,6276,6278],{"class":118,"line":330},[116,6265,123],{"class":122},[116,6267,127],{"class":126},[116,6269,701],{"class":122},[116,6271,4594],{"class":133},[116,6273,207],{"class":126},[116,6275,701],{"class":122},[116,6277,4601],{"class":133},[116,6279,137],{"class":126},[116,6281,6282,6284],{"class":118,"line":335},[116,6283,701],{"class":122},[116,6285,2620],{"class":133},[116,6287,6288],{"class":118,"line":341},[116,6289,386],{"class":126},[116,6291,6292],{"class":118,"line":354},[116,6293,6294],{"class":184},"    //1、全局函数配合友元   类内实现\n",[116,6296,6297,6300,6303,6306,6308,6310,6312,6314,6316,6318,6320,6322,6324],{"class":118,"line":383},[116,6298,6299],{"class":122},"    friend",[116,6301,6302],{"class":122}," void",[116,6304,6305],{"class":133}," printPerson",[116,6307,197],{"class":126},[116,6309,2840],{"class":133},[116,6311,127],{"class":126},[116,6313,4619],{"class":133},[116,6315,207],{"class":126},[116,6317,4624],{"class":133},[116,6319,4501],{"class":126},[116,6321,367],{"class":122},[116,6323,3875],{"class":203},[116,6325,380],{"class":126},[116,6327,6328],{"class":118,"line":389},[116,6329,1204],{"class":126},[116,6331,6332,6334,6336,6339,6341,6343,6345,6347,6349,6351,6353],{"class":118,"line":399},[116,6333,1405],{"class":126},[116,6335,548],{"class":122},[116,6337,6338],{"class":551}," \"姓名： \"",[116,6340,555],{"class":122},[116,6342,6239],{"class":126},[116,6344,548],{"class":122},[116,6346,6244],{"class":551},[116,6348,555],{"class":122},[116,6350,6249],{"class":126},[116,6352,548],{"class":122},[116,6354,562],{"class":126},[116,6356,6357],{"class":118,"line":408},[116,6358,1335],{"class":126},[116,6360,6361],{"class":118,"line":417},[116,6362,179],{"emptyLinePlaceholder":178},[116,6364,6365],{"class":118,"line":422},[116,6366,6367],{"class":184},"    //全局函数配合友元  类外实现\n",[116,6369,6370,6372,6374,6376,6379,6381,6384,6386,6388],{"class":118,"line":427},[116,6371,6299],{"class":122},[116,6373,6302],{"class":122},[116,6375,4610],{"class":133},[116,6377,6378],{"class":126},"\u003C>(Person",[116,6380,127],{"class":122},[116,6382,6383],{"class":126},"T1, T2",[116,6385,1133],{"class":122},[116,6387,1070],{"class":122},[116,6389,6390],{"class":126}," p);\n",[116,6392,6393],{"class":118,"line":438},[116,6394,179],{"emptyLinePlaceholder":178},[116,6396,6397],{"class":118,"line":443},[116,6398,2629],{"class":122},[116,6400,6401],{"class":118,"line":460},[116,6402,179],{"emptyLinePlaceholder":178},[116,6404,6405,6407,6409,6411,6413,6415,6417,6419],{"class":118,"line":475},[116,6406,2634],{"class":133},[116,6408,197],{"class":126},[116,6410,4619],{"class":133},[116,6412,2642],{"class":203},[116,6414,207],{"class":126},[116,6416,4624],{"class":133},[116,6418,2649],{"class":203},[116,6420,380],{"class":126},[116,6422,6423],{"class":118,"line":481},[116,6424,1204],{"class":126},[116,6426,6427,6429,6431,6433],{"class":118,"line":487},[116,6428,2660],{"class":453},[116,6430,2663],{"class":126},[116,6432,227],{"class":122},[116,6434,2668],{"class":126},[116,6436,6437,6439,6441,6443],{"class":118,"line":492},[116,6438,2660],{"class":453},[116,6440,2675],{"class":126},[116,6442,227],{"class":122},[116,6444,2680],{"class":126},[116,6446,6447],{"class":118,"line":498},[116,6448,1335],{"class":126},[116,6450,6451],{"class":118,"line":504},[116,6452,179],{"emptyLinePlaceholder":178},[116,6454,6455],{"class":118,"line":513},[116,6456,6457],{"class":122},"private:\n",[116,6459,6460],{"class":118,"line":518},[116,6461,5381],{"class":126},[116,6463,6464],{"class":118,"line":524},[116,6465,5386],{"class":126},[116,6467,6468],{"class":118,"line":537},[116,6469,179],{"emptyLinePlaceholder":178},[116,6471,6472],{"class":118,"line":542},[116,6473,2701],{"class":126},[116,6475,6476],{"class":118,"line":565},[116,6477,179],{"emptyLinePlaceholder":178},[116,6479,6480],{"class":118,"line":583},[116,6481,6482],{"class":184},"//1、全局函数在类内实现\n",[116,6484,6485,6487,6489],{"class":118,"line":588},[116,6486,191],{"class":122},[116,6488,432],{"class":133},[116,6490,435],{"class":126},[116,6492,6493],{"class":118,"line":593},[116,6494,386],{"class":126},[116,6496,6497,6499,6501,6503,6505,6507,6509,6511,6513,6515,6517],{"class":118,"line":598},[116,6498,3061],{"class":126},[116,6500,127],{"class":122},[116,6502,3515],{"class":126},[116,6504,531],{"class":122},[116,6506,4548],{"class":122},[116,6508,17],{"class":133},[116,6510,197],{"class":126},[116,6512,3068],{"class":551},[116,6514,207],{"class":126},[116,6516,5580],{"class":453},[116,6518,1492],{"class":126},[116,6520,6521,6524],{"class":118,"line":609},[116,6522,6523],{"class":133},"    printPerson",[116,6525,4569],{"class":126},[116,6527,6528],{"class":118,"line":614},[116,6529,258],{"class":126},[116,6531,6532],{"class":118,"line":623},[116,6533,179],{"emptyLinePlaceholder":178},[116,6535,6536],{"class":118,"line":628},[116,6537,6538],{"class":184},"//2、全局函数在类外实现\n",[116,6540,6541,6543,6545],{"class":118,"line":633},[116,6542,191],{"class":122},[116,6544,909],{"class":133},[116,6546,435],{"class":126},[116,6548,6549],{"class":118,"line":644},[116,6550,386],{"class":126},[116,6552,6553,6555,6557,6559,6561,6563,6565,6567,6570,6572,6574],{"class":118,"line":1593},[116,6554,3061],{"class":126},[116,6556,127],{"class":122},[116,6558,3515],{"class":126},[116,6560,531],{"class":122},[116,6562,4548],{"class":122},[116,6564,17],{"class":133},[116,6566,197],{"class":126},[116,6568,6569],{"class":551},"\"Jerry\"",[116,6571,207],{"class":126},[116,6573,4866],{"class":453},[116,6575,1492],{"class":126},[116,6577,6578,6580],{"class":118,"line":1617},[116,6579,4741],{"class":133},[116,6581,4569],{"class":126},[116,6583,6584],{"class":118,"line":1625},[116,6585,258],{"class":126},[116,6587,6588],{"class":118,"line":1632},[116,6589,179],{"emptyLinePlaceholder":178},[116,6591,6592,6594,6596],{"class":118,"line":1637},[116,6593,531],{"class":122},[116,6595,603],{"class":133},[116,6597,606],{"class":126},[116,6599,6600],{"class":118,"line":1642},[116,6601,179],{"emptyLinePlaceholder":178},[116,6603,6604],{"class":118,"line":1651},[116,6605,6606],{"class":184},"    //test01();\n",[116,6608,6609],{"class":118,"line":1656},[116,6610,179],{"emptyLinePlaceholder":178},[116,6612,6613,6615],{"class":118,"line":1663},[116,6614,969],{"class":133},[116,6616,620],{"class":126},[116,6618,6619],{"class":118,"line":1670},[116,6620,179],{"emptyLinePlaceholder":178},[116,6622,6623],{"class":118,"line":1675},[116,6624,179],{"emptyLinePlaceholder":178},[116,6626,6627,6629,6631],{"class":118,"line":1680},[116,6628,636],{"class":122},[116,6630,639],{"class":453},[116,6632,457],{"class":126},[116,6634,6635],{"class":118,"line":1689},[116,6636,258],{"class":126},[17,6638,6639,1696],{},[21,6640,148],{},[17,6642,6643],{},"总结：建议全局函数做类内实现，用法简单，而且编译器可以直接识别",[87,6645,6646],{"id":6646},"类模板案例",[17,6648,6649],{},"案例描述:  实现一个通用的数组类，要求如下：",[60,6651,6652,6655,6658,6661,6664,6667,6670],{},[63,6653,6654],{},"可以对内置数据类型以及自定义数据类型的数据进行存储",[63,6656,6657],{},"将数组中的数据存储到堆区",[63,6659,6660],{},"构造函数中可以传入数组的容量",[63,6662,6663],{},"提供对应的拷贝构造函数以及operator=防止浅拷贝问题",[63,6665,6666],{},"提供尾插法和尾删法对数组中的数据进行增加和删除",[63,6668,6669],{},"可以通过下标的方式访问数组中的元素",[63,6671,6672],{},"可以获取数组中当前元素个数和数组的容量",[17,6674,6675],{},[21,6676,168],{},[17,6678,6679],{},"myArray.hpp中代码",[106,6681,6683],{"className":108,"code":6682,"language":110,"meta":111,"style":111},"#pragma once\n#include \u003Ciostream>\nusing namespace std;\n\ntemplate\u003Cclass T>\nclass MyArray\n{\npublic:\n    \n    //构造函数\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    //拷贝构造\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            //如果T为对象，而且还包含指针，必须需要重载 = 操作符，因为这个等号不是 构造 而是赋值，\n            // 普通类型可以直接= 但是指针类型需要深拷贝\n            this->pAddress[i] = arr.pAddress[i];\n        }\n    }\n\n    //重载= 操作符  防止浅拷贝问题\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    //重载[] 操作符  arr[0]\n    T& operator [](int index)\n    {\n        return this->pAddress[index]; //不考虑越界，用户自己去处理\n    }\n\n    //尾插法\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    //尾删法\n    void Pop_back()\n    {\n        if (this->m_Size == 0)\n        {\n            return;\n        }\n        this->m_Size--;\n    }\n\n    //获取数组容量\n    int getCapacity()\n    {\n        return this->m_Capacity;\n    }\n\n    //获取数组大小\n    int getSize()\n    {\n        return this->m_Size;\n    }\n\n    //析构\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;  //指向一个堆空间，这个空间存储真正的数据\n    int m_Capacity; //容量\n    int m_Size;   // 大小\n};\n",[113,6684,6685,6691,6697,6707,6711,6723,6730,6734,6738,6742,6747,6761,6765,6777,6790,6809,6813,6817,6822,6840,6844,6855,6866,6883,6910,6914,6919,6924,6937,6941,6945,6949,6954,6978,6982,6999,7009,7021,7033,7037,7041,7052,7063,7079,7105,7116,7120,7131,7135,7139,7144,7165,7169,7181,7185,7189,7194,7214,7218,7235,7239,7246,7250,7267,7278,7282,7286,7291,7300,7304,7320,7324,7330,7334,7345,7349,7353,7358,7367,7371,7380,7384,7388,7393,7402,7406,7415,7419,7424,7430,7438,7443,7460,7465,7474,7487,7500,7513,7518,7523,7528,7533,7548,7559,7570],{"__ignoreMap":111},[116,6686,6687,6689],{"class":118,"line":119},[116,6688,5689],{"class":122},[116,6690,5692],{"class":133},[116,6692,6693,6695],{"class":118,"line":140},[116,6694,2582],{"class":122},[116,6696,5699],{"class":551},[116,6698,6699,6701,6703,6705],{"class":118,"line":188},[116,6700,2590],{"class":122},[116,6702,2593],{"class":122},[116,6704,2596],{"class":133},[116,6706,457],{"class":126},[116,6708,6709],{"class":118,"line":218},[116,6710,179],{"emptyLinePlaceholder":178},[116,6712,6713,6715,6717,6719,6721],{"class":118,"line":233},[116,6714,123],{"class":122},[116,6716,127],{"class":126},[116,6718,701],{"class":122},[116,6720,134],{"class":133},[116,6722,137],{"class":126},[116,6724,6725,6727],{"class":118,"line":244},[116,6726,701],{"class":122},[116,6728,6729],{"class":133}," MyArray\n",[116,6731,6732],{"class":118,"line":255},[116,6733,386],{"class":126},[116,6735,6736],{"class":118,"line":261},[116,6737,2629],{"class":122},[116,6739,6740],{"class":118,"line":266},[116,6741,478],{"class":126},[116,6743,6744],{"class":118,"line":272},[116,6745,6746],{"class":184},"    //构造函数\n",[116,6748,6749,6752,6754,6756,6759],{"class":118,"line":295},[116,6750,6751],{"class":133},"    MyArray",[116,6753,197],{"class":126},[116,6755,531],{"class":122},[116,6757,6758],{"class":203}," capacity",[116,6760,380],{"class":126},[116,6762,6763],{"class":118,"line":307},[116,6764,1204],{"class":126},[116,6766,6767,6769,6772,6774],{"class":118,"line":316},[116,6768,2660],{"class":453},[116,6770,6771],{"class":126},"->m_Capacity ",[116,6773,227],{"class":122},[116,6775,6776],{"class":126}," capacity;\n",[116,6778,6779,6781,6784,6786,6788],{"class":118,"line":325},[116,6780,2660],{"class":453},[116,6782,6783],{"class":126},"->m_Size ",[116,6785,227],{"class":122},[116,6787,639],{"class":453},[116,6789,457],{"class":126},[116,6791,6792,6795,6797,6800,6803,6806],{"class":118,"line":330},[116,6793,6794],{"class":126},"        pAddress ",[116,6796,227],{"class":122},[116,6798,6799],{"class":122}," new",[116,6801,6802],{"class":126}," T[",[116,6804,6805],{"class":453},"this",[116,6807,6808],{"class":126},"->m_Capacity];\n",[116,6810,6811],{"class":118,"line":335},[116,6812,1335],{"class":126},[116,6814,6815],{"class":118,"line":341},[116,6816,179],{"emptyLinePlaceholder":178},[116,6818,6819],{"class":118,"line":354},[116,6820,6821],{"class":184},"    //拷贝构造\n",[116,6823,6824,6826,6828,6831,6834,6836,6838],{"class":118,"line":383},[116,6825,6751],{"class":133},[116,6827,197],{"class":126},[116,6829,6830],{"class":122},"const",[116,6832,6833],{"class":133}," MyArray",[116,6835,1070],{"class":122},[116,6837,1155],{"class":203},[116,6839,380],{"class":126},[116,6841,6842],{"class":118,"line":389},[116,6843,1204],{"class":126},[116,6845,6846,6848,6850,6852],{"class":118,"line":399},[116,6847,2660],{"class":453},[116,6849,6771],{"class":126},[116,6851,227],{"class":122},[116,6853,6854],{"class":126}," arr.m_Capacity;\n",[116,6856,6857,6859,6861,6863],{"class":118,"line":408},[116,6858,2660],{"class":453},[116,6860,6783],{"class":126},[116,6862,227],{"class":122},[116,6864,6865],{"class":126}," arr.m_Size;\n",[116,6867,6868,6870,6873,6875,6877,6879,6881],{"class":118,"line":417},[116,6869,2660],{"class":453},[116,6871,6872],{"class":126},"->pAddress ",[116,6874,227],{"class":122},[116,6876,6799],{"class":122},[116,6878,6802],{"class":126},[116,6880,6805],{"class":453},[116,6882,6808],{"class":126},[116,6884,6885,6887,6889,6891,6893,6895,6897,6899,6901,6903,6906,6908],{"class":118,"line":422},[116,6886,1225],{"class":122},[116,6888,1177],{"class":126},[116,6890,531],{"class":122},[116,6892,1182],{"class":126},[116,6894,227],{"class":122},[116,6896,639],{"class":453},[116,6898,1189],{"class":126},[116,6900,127],{"class":122},[116,6902,3446],{"class":453},[116,6904,6905],{"class":126},"->m_Size; i",[116,6907,1197],{"class":122},[116,6909,380],{"class":126},[116,6911,6912],{"class":118,"line":427},[116,6913,1259],{"class":126},[116,6915,6916],{"class":118,"line":438},[116,6917,6918],{"class":184},"            //如果T为对象，而且还包含指针，必须需要重载 = 操作符，因为这个等号不是 构造 而是赋值，\n",[116,6920,6921],{"class":118,"line":443},[116,6922,6923],{"class":184},"            // 普通类型可以直接= 但是指针类型需要深拷贝\n",[116,6925,6926,6929,6932,6934],{"class":118,"line":460},[116,6927,6928],{"class":453},"            this",[116,6930,6931],{"class":126},"->pAddress[i] ",[116,6933,227],{"class":122},[116,6935,6936],{"class":126}," arr.pAddress[i];\n",[116,6938,6939],{"class":118,"line":475},[116,6940,1297],{"class":126},[116,6942,6943],{"class":118,"line":481},[116,6944,1335],{"class":126},[116,6946,6947],{"class":118,"line":487},[116,6948,179],{"emptyLinePlaceholder":178},[116,6950,6951],{"class":118,"line":492},[116,6952,6953],{"class":184},"    //重载= 操作符  防止浅拷贝问题\n",[116,6955,6956,6958,6960,6963,6965,6967,6969,6971,6973,6976],{"class":118,"line":498},[116,6957,6751],{"class":133},[116,6959,367],{"class":122},[116,6961,6962],{"class":122}," operator",[116,6964,227],{"class":133},[116,6966,197],{"class":126},[116,6968,6830],{"class":122},[116,6970,6833],{"class":133},[116,6972,367],{"class":122},[116,6974,6975],{"class":203}," myarray",[116,6977,215],{"class":126},[116,6979,6980],{"class":118,"line":504},[116,6981,179],{"emptyLinePlaceholder":178},[116,6983,6984,6986,6988,6990,6992,6994,6997],{"class":118,"line":513},[116,6985,1302],{"class":122},[116,6987,1177],{"class":126},[116,6989,6805],{"class":453},[116,6991,6872],{"class":126},[116,6993,1308],{"class":122},[116,6995,6996],{"class":453}," NULL",[116,6998,215],{"class":126},[116,7000,7001,7004,7006],{"class":118,"line":518},[116,7002,7003],{"class":122},"            delete[]",[116,7005,3446],{"class":453},[116,7007,7008],{"class":126},"->pAddress;\n",[116,7010,7011,7013,7015,7017,7019],{"class":118,"line":524},[116,7012,6928],{"class":453},[116,7014,6771],{"class":126},[116,7016,227],{"class":122},[116,7018,639],{"class":453},[116,7020,457],{"class":126},[116,7022,7023,7025,7027,7029,7031],{"class":118,"line":537},[116,7024,6928],{"class":453},[116,7026,6783],{"class":126},[116,7028,227],{"class":122},[116,7030,639],{"class":453},[116,7032,457],{"class":126},[116,7034,7035],{"class":118,"line":542},[116,7036,1297],{"class":126},[116,7038,7039],{"class":118,"line":565},[116,7040,179],{"emptyLinePlaceholder":178},[116,7042,7043,7045,7047,7049],{"class":118,"line":583},[116,7044,2660],{"class":453},[116,7046,6771],{"class":126},[116,7048,227],{"class":122},[116,7050,7051],{"class":126}," myarray.m_Capacity;\n",[116,7053,7054,7056,7058,7060],{"class":118,"line":588},[116,7055,2660],{"class":453},[116,7057,6783],{"class":126},[116,7059,227],{"class":122},[116,7061,7062],{"class":126}," myarray.m_Size;\n",[116,7064,7065,7067,7069,7071,7073,7075,7077],{"class":118,"line":593},[116,7066,2660],{"class":453},[116,7068,6872],{"class":126},[116,7070,227],{"class":122},[116,7072,6799],{"class":122},[116,7074,6802],{"class":126},[116,7076,6805],{"class":453},[116,7078,6808],{"class":126},[116,7080,7081,7083,7085,7087,7089,7091,7093,7095,7097,7099,7101,7103],{"class":118,"line":598},[116,7082,1225],{"class":122},[116,7084,1177],{"class":126},[116,7086,531],{"class":122},[116,7088,1182],{"class":126},[116,7090,227],{"class":122},[116,7092,639],{"class":453},[116,7094,1189],{"class":126},[116,7096,127],{"class":122},[116,7098,3446],{"class":453},[116,7100,6905],{"class":126},[116,7102,1197],{"class":122},[116,7104,215],{"class":126},[116,7106,7107,7109,7111,7113],{"class":118,"line":609},[116,7108,6928],{"class":453},[116,7110,6931],{"class":126},[116,7112,227],{"class":122},[116,7114,7115],{"class":126}," myarray[i];\n",[116,7117,7118],{"class":118,"line":614},[116,7119,1297],{"class":126},[116,7121,7122,7124,7127,7129],{"class":118,"line":623},[116,7123,2775],{"class":122},[116,7125,7126],{"class":122}," *",[116,7128,6805],{"class":453},[116,7130,457],{"class":126},[116,7132,7133],{"class":118,"line":628},[116,7134,1335],{"class":126},[116,7136,7137],{"class":118,"line":633},[116,7138,179],{"emptyLinePlaceholder":178},[116,7140,7141],{"class":118,"line":644},[116,7142,7143],{"class":184},"    //重载[] 操作符  arr[0]\n",[116,7145,7146,7149,7151,7153,7156,7158,7160,7163],{"class":118,"line":1593},[116,7147,7148],{"class":133},"    T",[116,7150,367],{"class":122},[116,7152,6962],{"class":122},[116,7154,7155],{"class":133}," []",[116,7157,197],{"class":126},[116,7159,531],{"class":122},[116,7161,7162],{"class":203}," index",[116,7164,380],{"class":126},[116,7166,7167],{"class":118,"line":1617},[116,7168,1204],{"class":126},[116,7170,7171,7173,7175,7178],{"class":118,"line":1625},[116,7172,2775],{"class":122},[116,7174,3446],{"class":453},[116,7176,7177],{"class":126},"->pAddress[index];",[116,7179,7180],{"class":184}," //不考虑越界，用户自己去处理\n",[116,7182,7183],{"class":118,"line":1632},[116,7184,1335],{"class":126},[116,7186,7187],{"class":118,"line":1637},[116,7188,179],{"emptyLinePlaceholder":178},[116,7190,7191],{"class":118,"line":1642},[116,7192,7193],{"class":184},"    //尾插法\n",[116,7195,7196,7198,7201,7203,7205,7207,7209,7212],{"class":118,"line":1651},[116,7197,2448],{"class":122},[116,7199,7200],{"class":133}," Push_back",[116,7202,197],{"class":126},[116,7204,6830],{"class":122},[116,7206,134],{"class":133},[116,7208,1070],{"class":122},[116,7210,7211],{"class":203}," val",[116,7213,380],{"class":126},[116,7215,7216],{"class":118,"line":1656},[116,7217,1204],{"class":126},[116,7219,7220,7222,7224,7226,7228,7230,7232],{"class":118,"line":1663},[116,7221,1302],{"class":122},[116,7223,1177],{"class":126},[116,7225,6805],{"class":453},[116,7227,6771],{"class":126},[116,7229,2763],{"class":122},[116,7231,3446],{"class":453},[116,7233,7234],{"class":126},"->m_Size)\n",[116,7236,7237],{"class":118,"line":1670},[116,7238,1259],{"class":126},[116,7240,7241,7244],{"class":118,"line":1675},[116,7242,7243],{"class":122},"            return",[116,7245,457],{"class":126},[116,7247,7248],{"class":118,"line":1680},[116,7249,1297],{"class":126},[116,7251,7252,7254,7257,7259,7262,7264],{"class":118,"line":1689},[116,7253,2660],{"class":453},[116,7255,7256],{"class":126},"->pAddress[",[116,7258,6805],{"class":453},[116,7260,7261],{"class":126},"->m_Size] ",[116,7263,227],{"class":122},[116,7265,7266],{"class":126}," val;\n",[116,7268,7269,7271,7274,7276],{"class":118,"line":3058},[116,7270,2660],{"class":453},[116,7272,7273],{"class":126},"->m_Size",[116,7275,1197],{"class":122},[116,7277,457],{"class":126},[116,7279,7280],{"class":118,"line":3078},[116,7281,1335],{"class":126},[116,7283,7284],{"class":118,"line":3095},[116,7285,179],{"emptyLinePlaceholder":178},[116,7287,7288],{"class":118,"line":3101},[116,7289,7290],{"class":184},"    //尾删法\n",[116,7292,7293,7295,7298],{"class":118,"line":3107},[116,7294,2448],{"class":122},[116,7296,7297],{"class":133}," Pop_back",[116,7299,435],{"class":126},[116,7301,7302],{"class":118,"line":3121},[116,7303,1204],{"class":126},[116,7305,7306,7308,7310,7312,7314,7316,7318],{"class":118,"line":3128},[116,7307,1302],{"class":122},[116,7309,1177],{"class":126},[116,7311,6805],{"class":453},[116,7313,6783],{"class":126},[116,7315,2763],{"class":122},[116,7317,639],{"class":453},[116,7319,380],{"class":126},[116,7321,7322],{"class":118,"line":3133},[116,7323,1259],{"class":126},[116,7325,7326,7328],{"class":118,"line":3147},[116,7327,7243],{"class":122},[116,7329,457],{"class":126},[116,7331,7332],{"class":118,"line":3152},[116,7333,1297],{"class":126},[116,7335,7336,7338,7340,7343],{"class":118,"line":3157},[116,7337,2660],{"class":453},[116,7339,7273],{"class":126},[116,7341,7342],{"class":122},"--",[116,7344,457],{"class":126},[116,7346,7347],{"class":118,"line":3162},[116,7348,1335],{"class":126},[116,7350,7351],{"class":118,"line":3176},[116,7352,179],{"emptyLinePlaceholder":178},[116,7354,7355],{"class":118,"line":3181},[116,7356,7357],{"class":184},"    //获取数组容量\n",[116,7359,7360,7362,7365],{"class":118,"line":3186},[116,7361,221],{"class":122},[116,7363,7364],{"class":133}," getCapacity",[116,7366,435],{"class":126},[116,7368,7369],{"class":118,"line":3191},[116,7370,1204],{"class":126},[116,7372,7373,7375,7377],{"class":118,"line":3200},[116,7374,2775],{"class":122},[116,7376,3446],{"class":453},[116,7378,7379],{"class":126},"->m_Capacity;\n",[116,7381,7382],{"class":118,"line":3205},[116,7383,1335],{"class":126},[116,7385,7386],{"class":118,"line":3212},[116,7387,179],{"emptyLinePlaceholder":178},[116,7389,7390],{"class":118,"line":3217},[116,7391,7392],{"class":184},"    //获取数组大小\n",[116,7394,7395,7397,7400],{"class":118,"line":3224},[116,7396,221],{"class":122},[116,7398,7399],{"class":133}," getSize",[116,7401,435],{"class":126},[116,7403,7404],{"class":118,"line":3229},[116,7405,1204],{"class":126},[116,7407,7408,7410,7412],{"class":118,"line":3234},[116,7409,2775],{"class":122},[116,7411,3446],{"class":453},[116,7413,7414],{"class":126},"->m_Size;\n",[116,7416,7417],{"class":118,"line":3243},[116,7418,1335],{"class":126},[116,7420,7422],{"class":118,"line":7421},88,[116,7423,179],{"emptyLinePlaceholder":178},[116,7425,7427],{"class":118,"line":7426},89,[116,7428,7429],{"class":184},"    //析构\n",[116,7431,7433,7436],{"class":118,"line":7432},90,[116,7434,7435],{"class":133},"    ~MyArray",[116,7437,435],{"class":126},[116,7439,7441],{"class":118,"line":7440},91,[116,7442,1204],{"class":126},[116,7444,7446,7448,7450,7452,7454,7456,7458],{"class":118,"line":7445},92,[116,7447,1302],{"class":122},[116,7449,1177],{"class":126},[116,7451,6805],{"class":453},[116,7453,6872],{"class":126},[116,7455,1308],{"class":122},[116,7457,6996],{"class":453},[116,7459,380],{"class":126},[116,7461,7463],{"class":118,"line":7462},93,[116,7464,1259],{"class":126},[116,7466,7468,7470,7472],{"class":118,"line":7467},94,[116,7469,7003],{"class":122},[116,7471,3446],{"class":453},[116,7473,7008],{"class":126},[116,7475,7477,7479,7481,7483,7485],{"class":118,"line":7476},95,[116,7478,6928],{"class":453},[116,7480,6872],{"class":126},[116,7482,227],{"class":122},[116,7484,6996],{"class":453},[116,7486,457],{"class":126},[116,7488,7490,7492,7494,7496,7498],{"class":118,"line":7489},96,[116,7491,6928],{"class":453},[116,7493,6771],{"class":126},[116,7495,227],{"class":122},[116,7497,639],{"class":453},[116,7499,457],{"class":126},[116,7501,7503,7505,7507,7509,7511],{"class":118,"line":7502},97,[116,7504,6928],{"class":453},[116,7506,6783],{"class":126},[116,7508,227],{"class":122},[116,7510,639],{"class":453},[116,7512,457],{"class":126},[116,7514,7516],{"class":118,"line":7515},98,[116,7517,1297],{"class":126},[116,7519,7521],{"class":118,"line":7520},99,[116,7522,1335],{"class":126},[116,7524,7526],{"class":118,"line":7525},100,[116,7527,179],{"emptyLinePlaceholder":178},[116,7529,7531],{"class":118,"line":7530},101,[116,7532,6457],{"class":122},[116,7534,7536,7539,7542,7545],{"class":118,"line":7535},102,[116,7537,7538],{"class":126},"    T ",[116,7540,7541],{"class":122},"*",[116,7543,7544],{"class":126}," pAddress;",[116,7546,7547],{"class":184},"  //指向一个堆空间，这个空间存储真正的数据\n",[116,7549,7551,7553,7556],{"class":118,"line":7550},103,[116,7552,221],{"class":122},[116,7554,7555],{"class":126}," m_Capacity;",[116,7557,7558],{"class":184}," //容量\n",[116,7560,7562,7564,7567],{"class":118,"line":7561},104,[116,7563,221],{"class":122},[116,7565,7566],{"class":126}," m_Size;",[116,7568,7569],{"class":184},"   // 大小\n",[116,7571,7573],{"class":118,"line":7572},105,[116,7574,2701],{"class":126},[17,7576,7577,149],{},[21,7578,148],{},[17,7580,7581],{},"类模板案例—数组类封装.cpp中",[106,7583,7585],{"className":108,"code":7584,"language":110,"meta":111,"style":111},"#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//测试内置数据类型\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//测试自定义数据类型\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    //创建数组\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    //插入数据\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    //test01();\n\n    test02();\n\n\n    return 0;\n}\n",[113,7586,7587,7594,7600,7604,7628,7659,7673,7677,7685,7689,7693,7698,7706,7710,7726,7753,7757,7768,7772,7785,7793,7815,7837,7841,7854,7858,7869,7879,7892,7899,7921,7942,7946,7950,7955,7963,7967,7974,7993,8003,8013,8017,8021,8025,8031,8035,8039,8063,8067,8096,8124,8128,8132,8136,8140,8148,8152,8157,8176,8192,8209,8228,8247,8266,8270,8275,8285,8294,8303,8312,8321,8325,8333,8337,8359,8380,8384,8388,8392,8400,8404,8408,8412,8418,8422,8426,8434],{"__ignoreMap":111},[116,7588,7589,7591],{"class":118,"line":119},[116,7590,2582],{"class":122},[116,7592,7593],{"class":551}," \"myArray.hpp\"\n",[116,7595,7596,7598],{"class":118,"line":140},[116,7597,2582],{"class":122},[116,7599,2609],{"class":551},[116,7601,7602],{"class":118,"line":188},[116,7603,179],{"emptyLinePlaceholder":178},[116,7605,7606,7608,7611,7613,7616,7618,7620,7622,7624,7626],{"class":118,"line":218},[116,7607,191],{"class":122},[116,7609,7610],{"class":133}," printIntArray",[116,7612,197],{"class":126},[116,7614,7615],{"class":133},"MyArray",[116,7617,127],{"class":126},[116,7619,531],{"class":122},[116,7621,1133],{"class":126},[116,7623,367],{"class":122},[116,7625,1155],{"class":203},[116,7627,215],{"class":126},[116,7629,7630,7632,7634,7636,7638,7640,7642,7644,7646,7649,7652,7655,7657],{"class":118,"line":233},[116,7631,1174],{"class":122},[116,7633,1177],{"class":126},[116,7635,531],{"class":122},[116,7637,1182],{"class":126},[116,7639,227],{"class":122},[116,7641,639],{"class":453},[116,7643,1189],{"class":126},[116,7645,127],{"class":122},[116,7647,7648],{"class":126}," arr.",[116,7650,7651],{"class":133},"getSize",[116,7653,7654],{"class":126},"(); i",[116,7656,1197],{"class":122},[116,7658,215],{"class":126},[116,7660,7661,7663,7665,7667,7669,7671],{"class":118,"line":244},[116,7662,1405],{"class":126},[116,7664,548],{"class":122},[116,7666,1410],{"class":126},[116,7668,548],{"class":122},[116,7670,1415],{"class":551},[116,7672,457],{"class":126},[116,7674,7675],{"class":118,"line":255},[116,7676,1335],{"class":126},[116,7678,7679,7681,7683],{"class":118,"line":261},[116,7680,545],{"class":126},[116,7682,548],{"class":122},[116,7684,562],{"class":126},[116,7686,7687],{"class":118,"line":266},[116,7688,258],{"class":126},[116,7690,7691],{"class":118,"line":272},[116,7692,179],{"emptyLinePlaceholder":178},[116,7694,7695],{"class":118,"line":295},[116,7696,7697],{"class":184},"//测试内置数据类型\n",[116,7699,7700,7702,7704],{"class":118,"line":307},[116,7701,191],{"class":122},[116,7703,432],{"class":133},[116,7705,435],{"class":126},[116,7707,7708],{"class":118,"line":316},[116,7709,386],{"class":126},[116,7711,7712,7714,7717,7720,7722,7724],{"class":118,"line":325},[116,7713,6751],{"class":126},[116,7715,7716],{"class":122},"\u003Cint>",[116,7718,7719],{"class":133}," array1",[116,7721,197],{"class":126},[116,7723,3073],{"class":453},[116,7725,1492],{"class":126},[116,7727,7728,7730,7732,7734,7736,7738,7740,7742,7744,7746,7749,7751],{"class":118,"line":330},[116,7729,1174],{"class":122},[116,7731,1177],{"class":126},[116,7733,531],{"class":122},[116,7735,1182],{"class":126},[116,7737,227],{"class":122},[116,7739,639],{"class":453},[116,7741,1189],{"class":126},[116,7743,127],{"class":122},[116,7745,454],{"class":453},[116,7747,7748],{"class":126},"; i",[116,7750,1197],{"class":122},[116,7752,380],{"class":126},[116,7754,7755],{"class":118,"line":335},[116,7756,1204],{"class":126},[116,7758,7759,7762,7765],{"class":118,"line":341},[116,7760,7761],{"class":126},"        array1.",[116,7763,7764],{"class":133},"Push_back",[116,7766,7767],{"class":126},"(i);\n",[116,7769,7770],{"class":118,"line":354},[116,7771,1335],{"class":126},[116,7773,7774,7776,7778,7781,7783],{"class":118,"line":383},[116,7775,545],{"class":126},[116,7777,548],{"class":122},[116,7779,7780],{"class":551}," \"array1打印输出：\"",[116,7782,555],{"class":122},[116,7784,562],{"class":126},[116,7786,7787,7790],{"class":118,"line":389},[116,7788,7789],{"class":133},"    printIntArray",[116,7791,7792],{"class":126},"(array1);\n",[116,7794,7795,7797,7799,7802,7804,7807,7809,7811,7813],{"class":118,"line":399},[116,7796,545],{"class":126},[116,7798,548],{"class":122},[116,7800,7801],{"class":551}," \"array1的大小：\"",[116,7803,555],{"class":122},[116,7805,7806],{"class":126}," array1.",[116,7808,7651],{"class":133},[116,7810,4667],{"class":126},[116,7812,548],{"class":122},[116,7814,562],{"class":126},[116,7816,7817,7819,7821,7824,7826,7828,7831,7833,7835],{"class":118,"line":408},[116,7818,545],{"class":126},[116,7820,548],{"class":122},[116,7822,7823],{"class":551}," \"array1的容量：\"",[116,7825,555],{"class":122},[116,7827,7806],{"class":126},[116,7829,7830],{"class":133},"getCapacity",[116,7832,4667],{"class":126},[116,7834,548],{"class":122},[116,7836,562],{"class":126},[116,7838,7839],{"class":118,"line":417},[116,7840,179],{"emptyLinePlaceholder":178},[116,7842,7843,7845,7847,7850,7852],{"class":118,"line":422},[116,7844,545],{"class":126},[116,7846,548],{"class":122},[116,7848,7849],{"class":551}," \"--------------------------\"",[116,7851,555],{"class":122},[116,7853,562],{"class":126},[116,7855,7856],{"class":118,"line":427},[116,7857,179],{"emptyLinePlaceholder":178},[116,7859,7860,7862,7864,7867],{"class":118,"line":438},[116,7861,6751],{"class":126},[116,7863,7716],{"class":122},[116,7865,7866],{"class":133}," array2",[116,7868,7792],{"class":126},[116,7870,7871,7874,7877],{"class":118,"line":443},[116,7872,7873],{"class":126},"    array2.",[116,7875,7876],{"class":133},"Pop_back",[116,7878,620],{"class":126},[116,7880,7881,7883,7885,7888,7890],{"class":118,"line":460},[116,7882,545],{"class":126},[116,7884,548],{"class":122},[116,7886,7887],{"class":551}," \"array2打印输出：\"",[116,7889,555],{"class":122},[116,7891,562],{"class":126},[116,7893,7894,7896],{"class":118,"line":475},[116,7895,7789],{"class":133},[116,7897,7898],{"class":126},"(array2);\n",[116,7900,7901,7903,7905,7908,7910,7913,7915,7917,7919],{"class":118,"line":481},[116,7902,545],{"class":126},[116,7904,548],{"class":122},[116,7906,7907],{"class":551}," \"array2的大小：\"",[116,7909,555],{"class":122},[116,7911,7912],{"class":126}," array2.",[116,7914,7651],{"class":133},[116,7916,4667],{"class":126},[116,7918,548],{"class":122},[116,7920,562],{"class":126},[116,7922,7923,7925,7927,7930,7932,7934,7936,7938,7940],{"class":118,"line":487},[116,7924,545],{"class":126},[116,7926,548],{"class":122},[116,7928,7929],{"class":551}," \"array2的容量：\"",[116,7931,555],{"class":122},[116,7933,7912],{"class":126},[116,7935,7830],{"class":133},[116,7937,4667],{"class":126},[116,7939,548],{"class":122},[116,7941,562],{"class":126},[116,7943,7944],{"class":118,"line":492},[116,7945,258],{"class":126},[116,7947,7948],{"class":118,"line":498},[116,7949,179],{"emptyLinePlaceholder":178},[116,7951,7952],{"class":118,"line":504},[116,7953,7954],{"class":184},"//测试自定义数据类型\n",[116,7956,7957,7959,7961],{"class":118,"line":513},[116,7958,701],{"class":122},[116,7960,5330],{"class":133},[116,7962,5333],{"class":126},[116,7964,7965],{"class":118,"line":518},[116,7966,2629],{"class":122},[116,7968,7969,7971],{"class":118,"line":524},[116,7970,2634],{"class":133},[116,7972,7973],{"class":126},"() {} \n",[116,7975,7976,7979,7981,7983,7985,7987,7989,7991],{"class":118,"line":537},[116,7977,7978],{"class":133},"        Person",[116,7980,197],{"class":126},[116,7982,2639],{"class":133},[116,7984,2642],{"class":203},[116,7986,207],{"class":126},[116,7988,531],{"class":122},[116,7990,2649],{"class":203},[116,7992,215],{"class":126},[116,7994,7995,7997,7999,8001],{"class":118,"line":542},[116,7996,2660],{"class":453},[116,7998,2663],{"class":126},[116,8000,227],{"class":122},[116,8002,2668],{"class":126},[116,8004,8005,8007,8009,8011],{"class":118,"line":565},[116,8006,2660],{"class":453},[116,8008,2675],{"class":126},[116,8010,227],{"class":122},[116,8012,2680],{"class":126},[116,8014,8015],{"class":118,"line":583},[116,8016,1335],{"class":126},[116,8018,8019],{"class":118,"line":588},[116,8020,2629],{"class":122},[116,8022,8023],{"class":118,"line":593},[116,8024,2689],{"class":126},[116,8026,8027,8029],{"class":118,"line":598},[116,8028,221],{"class":122},[116,8030,2696],{"class":126},[116,8032,8033],{"class":118,"line":609},[116,8034,2701],{"class":126},[116,8036,8037],{"class":118,"line":614},[116,8038,179],{"emptyLinePlaceholder":178},[116,8040,8041,8043,8046,8048,8050,8052,8054,8056,8058,8061],{"class":118,"line":623},[116,8042,191],{"class":122},[116,8044,8045],{"class":133}," printPersonArray",[116,8047,197],{"class":126},[116,8049,7615],{"class":133},[116,8051,127],{"class":126},[116,8053,2840],{"class":133},[116,8055,1133],{"class":126},[116,8057,367],{"class":122},[116,8059,8060],{"class":203}," personArr",[116,8062,380],{"class":126},[116,8064,8065],{"class":118,"line":628},[116,8066,386],{"class":126},[116,8068,8069,8071,8073,8075,8077,8079,8081,8083,8085,8088,8090,8092,8094],{"class":118,"line":633},[116,8070,1174],{"class":122},[116,8072,1177],{"class":126},[116,8074,531],{"class":122},[116,8076,1182],{"class":126},[116,8078,227],{"class":122},[116,8080,639],{"class":453},[116,8082,1189],{"class":126},[116,8084,127],{"class":122},[116,8086,8087],{"class":126}," personArr.",[116,8089,7651],{"class":133},[116,8091,7654],{"class":126},[116,8093,1197],{"class":122},[116,8095,215],{"class":126},[116,8097,8098,8100,8102,8105,8107,8110,8112,8115,8117,8120,8122],{"class":118,"line":644},[116,8099,1405],{"class":126},[116,8101,548],{"class":122},[116,8103,8104],{"class":551}," \"姓名：\"",[116,8106,555],{"class":122},[116,8108,8109],{"class":126}," personArr[i].m_Name ",[116,8111,548],{"class":122},[116,8113,8114],{"class":551}," \" 年龄： \"",[116,8116,555],{"class":122},[116,8118,8119],{"class":126}," personArr[i].m_Age ",[116,8121,548],{"class":122},[116,8123,562],{"class":126},[116,8125,8126],{"class":118,"line":1593},[116,8127,1335],{"class":126},[116,8129,8130],{"class":118,"line":1617},[116,8131,179],{"emptyLinePlaceholder":178},[116,8133,8134],{"class":118,"line":1625},[116,8135,258],{"class":126},[116,8137,8138],{"class":118,"line":1632},[116,8139,179],{"emptyLinePlaceholder":178},[116,8141,8142,8144,8146],{"class":118,"line":1637},[116,8143,191],{"class":122},[116,8145,909],{"class":133},[116,8147,435],{"class":126},[116,8149,8150],{"class":118,"line":1642},[116,8151,386],{"class":126},[116,8153,8154],{"class":118,"line":1651},[116,8155,8156],{"class":184},"    //创建数组\n",[116,8158,8159,8161,8163,8165,8167,8170,8172,8174],{"class":118,"line":1656},[116,8160,6751],{"class":126},[116,8162,127],{"class":122},[116,8164,2840],{"class":126},[116,8166,1133],{"class":122},[116,8168,8169],{"class":133}," pArray",[116,8171,197],{"class":126},[116,8173,3073],{"class":453},[116,8175,1492],{"class":126},[116,8177,8178,8180,8182,8184,8186,8188,8190],{"class":118,"line":1663},[116,8179,3061],{"class":126},[116,8181,2845],{"class":133},[116,8183,197],{"class":126},[116,8185,3526],{"class":551},[116,8187,207],{"class":126},[116,8189,4866],{"class":453},[116,8191,1492],{"class":126},[116,8193,8194,8196,8198,8200,8203,8205,8207],{"class":118,"line":1670},[116,8195,3061],{"class":126},[116,8197,2854],{"class":133},[116,8199,197],{"class":126},[116,8201,8202],{"class":551},"\"韩信\"",[116,8204,207],{"class":126},[116,8206,5580],{"class":453},[116,8208,1492],{"class":126},[116,8210,8211,8213,8216,8218,8221,8223,8226],{"class":118,"line":1675},[116,8212,3061],{"class":126},[116,8214,8215],{"class":133},"p3",[116,8217,197],{"class":126},[116,8219,8220],{"class":551},"\"妲己\"",[116,8222,207],{"class":126},[116,8224,8225],{"class":453},"18",[116,8227,1492],{"class":126},[116,8229,8230,8232,8235,8237,8240,8242,8245],{"class":118,"line":1680},[116,8231,3061],{"class":126},[116,8233,8234],{"class":133},"p4",[116,8236,197],{"class":126},[116,8238,8239],{"class":551},"\"王昭君\"",[116,8241,207],{"class":126},[116,8243,8244],{"class":453},"15",[116,8246,1492],{"class":126},[116,8248,8249,8251,8254,8256,8259,8261,8264],{"class":118,"line":1689},[116,8250,3061],{"class":126},[116,8252,8253],{"class":133},"p5",[116,8255,197],{"class":126},[116,8257,8258],{"class":551},"\"赵云\"",[116,8260,207],{"class":126},[116,8262,8263],{"class":453},"24",[116,8265,1492],{"class":126},[116,8267,8268],{"class":118,"line":3058},[116,8269,179],{"emptyLinePlaceholder":178},[116,8271,8272],{"class":118,"line":3078},[116,8273,8274],{"class":184},"    //插入数据\n",[116,8276,8277,8280,8282],{"class":118,"line":3095},[116,8278,8279],{"class":126},"    pArray.",[116,8281,7764],{"class":133},[116,8283,8284],{"class":126},"(p1);\n",[116,8286,8287,8289,8291],{"class":118,"line":3101},[116,8288,8279],{"class":126},[116,8290,7764],{"class":133},[116,8292,8293],{"class":126},"(p2);\n",[116,8295,8296,8298,8300],{"class":118,"line":3107},[116,8297,8279],{"class":126},[116,8299,7764],{"class":133},[116,8301,8302],{"class":126},"(p3);\n",[116,8304,8305,8307,8309],{"class":118,"line":3121},[116,8306,8279],{"class":126},[116,8308,7764],{"class":133},[116,8310,8311],{"class":126},"(p4);\n",[116,8313,8314,8316,8318],{"class":118,"line":3128},[116,8315,8279],{"class":126},[116,8317,7764],{"class":133},[116,8319,8320],{"class":126},"(p5);\n",[116,8322,8323],{"class":118,"line":3133},[116,8324,179],{"emptyLinePlaceholder":178},[116,8326,8327,8330],{"class":118,"line":3147},[116,8328,8329],{"class":133},"    printPersonArray",[116,8331,8332],{"class":126},"(pArray);\n",[116,8334,8335],{"class":118,"line":3152},[116,8336,179],{"emptyLinePlaceholder":178},[116,8338,8339,8341,8343,8346,8348,8351,8353,8355,8357],{"class":118,"line":3157},[116,8340,545],{"class":126},[116,8342,548],{"class":122},[116,8344,8345],{"class":551}," \"pArray的大小：\"",[116,8347,555],{"class":122},[116,8349,8350],{"class":126}," pArray.",[116,8352,7651],{"class":133},[116,8354,4667],{"class":126},[116,8356,548],{"class":122},[116,8358,562],{"class":126},[116,8360,8361,8363,8365,8368,8370,8372,8374,8376,8378],{"class":118,"line":3162},[116,8362,545],{"class":126},[116,8364,548],{"class":122},[116,8366,8367],{"class":551}," \"pArray的容量：\"",[116,8369,555],{"class":122},[116,8371,8350],{"class":126},[116,8373,7830],{"class":133},[116,8375,4667],{"class":126},[116,8377,548],{"class":122},[116,8379,562],{"class":126},[116,8381,8382],{"class":118,"line":3176},[116,8383,179],{"emptyLinePlaceholder":178},[116,8385,8386],{"class":118,"line":3181},[116,8387,258],{"class":126},[116,8389,8390],{"class":118,"line":3186},[116,8391,179],{"emptyLinePlaceholder":178},[116,8393,8394,8396,8398],{"class":118,"line":3191},[116,8395,531],{"class":122},[116,8397,603],{"class":133},[116,8399,606],{"class":126},[116,8401,8402],{"class":118,"line":3200},[116,8403,179],{"emptyLinePlaceholder":178},[116,8405,8406],{"class":118,"line":3205},[116,8407,6606],{"class":184},[116,8409,8410],{"class":118,"line":3212},[116,8411,179],{"emptyLinePlaceholder":178},[116,8413,8414,8416],{"class":118,"line":3217},[116,8415,969],{"class":133},[116,8417,620],{"class":126},[116,8419,8420],{"class":118,"line":3224},[116,8421,179],{"emptyLinePlaceholder":178},[116,8423,8424],{"class":118,"line":3229},[116,8425,179],{"emptyLinePlaceholder":178},[116,8427,8428,8430,8432],{"class":118,"line":3234},[116,8429,636],{"class":122},[116,8431,639],{"class":453},[116,8433,457],{"class":126},[116,8435,8436],{"class":118,"line":3243},[116,8437,258],{"class":126},[17,8439,8440,1696],{},[21,8441,148],{},[17,8443,654],{},[17,8445,8446],{},"能够利用所学知识点实现通用的数组",[8448,8449,8450],"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":111,"searchDepth":140,"depth":140,"links":8452},[8453],{"id":5,"depth":140,"text":5,"children":8454},[8455,8456,8457],{"id":15,"depth":188,"text":15},{"id":71,"depth":188,"text":71},{"id":85,"depth":188,"text":85},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban",15000000,"2023-10-05","wiki/2023-10-05-cplusplus-jiao-xue","zh-cn:2023-10-05-cplusplus-jiao-xue","/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki/2023-10-05-Cplusplus教学/ch15-模板",false,null,"/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban","zh-CN","zh-cn",{},{"title":5,"description":111},"YDM4cMBPbEbLq6kbDACl8t8t7a0BjpRZyythDw3iXSc",[8476,8481,8486,8492,8498,8504,8510,8516,8522,8528,8534,8540,8546,8547,8553,8559,8565,8571,8577,8583,8589,8595,8601,8607,8613,8619,8625,8631,8637,8643,8649,8655,8661,8667,8673,8679,8685,8691,8697,8703,8709,8715,8720,8726,8732,8738,8744,8750,8756,8761,8767,8773,8779,8785,8791,8797,8803,8809,8815,8821,8827,8833,8838,8843,8848,8853,8858,8863,8868,8873],{"path":8477,"stem":8478,"title":8479,"date":8460,"chapter":1562,"chapterSort":8480,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch1-c-ji-chu-chu-shi","wiki/2023-10-05-Cplusplus教学/ch1-C++基础初识","C++基础初识",1000000,{"path":8482,"stem":8483,"title":8484,"date":8460,"chapter":3073,"chapterSort":8485,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch10-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki/2023-10-05-Cplusplus教学/ch10-内存分区与生命周期","内存分区与生命周期",10000000,{"path":8487,"stem":8488,"title":8489,"date":8460,"chapter":8490,"chapterSort":8491,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch11-yin-yong","wiki/2023-10-05-Cplusplus教学/ch11-引用","引用","11",11000000,{"path":8493,"stem":8494,"title":8495,"date":8460,"chapter":8496,"chapterSort":8497,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch12-han-shu-ti-gao-yu-ming-ming-kong-jian","wiki/2023-10-05-Cplusplus教学/ch12-函数提高与命名空间","函数提高与命名空间","12",12000000,{"path":8499,"stem":8500,"title":8501,"date":8460,"chapter":8502,"chapterSort":8503,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-1-feng-zhuang","wiki/2023-10-05-Cplusplus教学/ch13-1-封装","封装","13.1",13010000,{"path":8505,"stem":8506,"title":8507,"date":8460,"chapter":8508,"chapterSort":8509,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-2-dui-xiang-chu-shi-hua-he-qing-li","wiki/2023-10-05-Cplusplus教学/ch13-2-对象初始化和清理","对象初始化和清理","13.2",13020000,{"path":8511,"stem":8512,"title":8513,"date":8460,"chapter":8514,"chapterSort":8515,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-3-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch13-3-对象模型与this指针","对象模型与this指针","13.3",13030000,{"path":8517,"stem":8518,"title":8519,"date":8460,"chapter":8520,"chapterSort":8521,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-4-you-yuan-yu-yun-suan-fu-zhong-zai","wiki/2023-10-05-Cplusplus教学/ch13-4-友元与运算符重载","友元与运算符重载","13.4",13040000,{"path":8523,"stem":8524,"title":8525,"date":8460,"chapter":8526,"chapterSort":8527,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-5-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch13-5-继承","继承","13.5",13050000,{"path":8529,"stem":8530,"title":8531,"date":8460,"chapter":8532,"chapterSort":8533,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-6-duo-tai","wiki/2023-10-05-Cplusplus教学/ch13-6-多态","多态","13.6",13060000,{"path":8535,"stem":8536,"title":8537,"date":8460,"chapter":8538,"chapterSort":8539,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-lei-he-dui-xiang","wiki/2023-10-05-Cplusplus教学/ch13-类和对象","类和对象","13",13000000,{"path":8541,"stem":8542,"title":8543,"date":8460,"chapter":8544,"chapterSort":8545,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch14-wen-jian-cao-zuo","wiki/2023-10-05-Cplusplus教学/ch14-文件操作","文件操作","14",14000000,{"path":8458,"stem":8466,"title":5,"date":8460,"chapter":8244,"chapterSort":8459,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},{"path":8548,"stem":8549,"title":8550,"date":8460,"chapter":8551,"chapterSort":8552,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-1-stl-chu-shi","wiki/2023-10-05-Cplusplus教学/ch16-1-STL初识","STL初识","16.1",16010000,{"path":8554,"stem":8555,"title":8556,"date":8460,"chapter":8557,"chapterSort":8558,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-2-std-array","wiki/2023-10-05-Cplusplus教学/ch16-2-std-array","std::array","16.2",16020000,{"path":8560,"stem":8561,"title":8562,"date":8460,"chapter":8563,"chapterSort":8564,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-3-string-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-3-string容器","string容器","16.3",16030000,{"path":8566,"stem":8567,"title":8568,"date":8460,"chapter":8569,"chapterSort":8570,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-4-vector-yu-deque-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-4-vector与deque容器","vector与deque容器","16.4",16040000,{"path":8572,"stem":8573,"title":8574,"date":8460,"chapter":8575,"chapterSort":8576,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-5-stack-queue-list-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-5-stack-queue-list容器","stack / queue / list 容器","16.5",16050000,{"path":8578,"stem":8579,"title":8580,"date":8460,"chapter":8581,"chapterSort":8582,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-6-set-map-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-6-set-map容器","set / map 容器","16.6",16060000,{"path":8584,"stem":8585,"title":8586,"date":8460,"chapter":8587,"chapterSort":8588,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-7-han-shu-dui-xiang-yu-wei-ci","wiki/2023-10-05-Cplusplus教学/ch16-7-函数对象与谓词","函数对象与谓词","16.7",16070000,{"path":8590,"stem":8591,"title":8592,"date":8460,"chapter":8593,"chapterSort":8594,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-8-chang-yong-suan-fa","wiki/2023-10-05-Cplusplus教学/ch16-8-常用算法","常用算法","16.8",16080000,{"path":8596,"stem":8597,"title":8598,"date":8460,"chapter":8599,"chapterSort":8600,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-stl-ti-gao-bian-cheng","wiki/2023-10-05-Cplusplus教学/ch16-STL提高编程","STL提高编程","16",16000000,{"path":8602,"stem":8603,"title":8604,"date":8460,"chapter":8605,"chapterSort":8606,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan","wiki/2023-10-05-Cplusplus教学/ch17-C++类型转换","C++类型转换","17",17000000,{"path":8608,"stem":8609,"title":8610,"date":8460,"chapter":8611,"chapterSort":8612,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-1-auto","wiki/2023-10-05-Cplusplus教学/ch18-1-auto","auto","18.1",18010000,{"path":8614,"stem":8615,"title":8616,"date":8460,"chapter":8617,"chapterSort":8618,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-10-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki/2023-10-05-Cplusplus教学/ch18-10-右值引用和移动语义","右值引用和移动语义","18.10",18100000,{"path":8620,"stem":8621,"title":8622,"date":8460,"chapter":8623,"chapterSort":8624,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-11-lambda-biao-da-shi","wiki/2023-10-05-Cplusplus教学/ch18-11-Lambda表达式","Lambda 表达式","18.11",18110000,{"path":8626,"stem":8627,"title":8628,"date":8460,"chapter":8629,"chapterSort":8630,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-12-std-function","wiki/2023-10-05-Cplusplus教学/ch18-12-std-function","std::function","18.12",18120000,{"path":8632,"stem":8633,"title":8634,"date":8460,"chapter":8635,"chapterSort":8636,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind","wiki/2023-10-05-Cplusplus教学/ch18-13-std-bind","std::bind","18.13",18130000,{"path":8638,"stem":8639,"title":8640,"date":8460,"chapter":8641,"chapterSort":8642,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-14-std-optional","wiki/2023-10-05-Cplusplus教学/ch18-14-std-optional","std::optional","18.14",18140000,{"path":8644,"stem":8645,"title":8646,"date":8460,"chapter":8647,"chapterSort":8648,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-15-std-variant","wiki/2023-10-05-Cplusplus教学/ch18-15-std-variant","std::variant","18.15",18150000,{"path":8650,"stem":8651,"title":8652,"date":8460,"chapter":8653,"chapterSort":8654,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-16-std-span","wiki/2023-10-05-Cplusplus教学/ch18-16-std-span","std::span","18.16",18160000,{"path":8656,"stem":8657,"title":8658,"date":8460,"chapter":8659,"chapterSort":8660,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-17-std-format-print","wiki/2023-10-05-Cplusplus教学/ch18-17-std-format-print","std::format / std::print","18.17",18170000,{"path":8662,"stem":8663,"title":8664,"date":8460,"chapter":8665,"chapterSort":8666,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-18-std-chrono","wiki/2023-10-05-Cplusplus教学/ch18-18-std-chrono","std::chrono","18.18",18180000,{"path":8668,"stem":8669,"title":8670,"date":8460,"chapter":8671,"chapterSort":8672,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-1-std-thread","wiki/2023-10-05-Cplusplus教学/ch18-19-1-std-thread","std::thread 与 join","18.19.1",18190100,{"path":8674,"stem":8675,"title":8676,"date":8460,"chapter":8677,"chapterSort":8678,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-2-mutex-lock-guard","wiki/2023-10-05-Cplusplus教学/ch18-19-2-mutex-lock-guard","mutex 与 lock_guard","18.19.2",18190200,{"path":8680,"stem":8681,"title":8682,"date":8460,"chapter":8683,"chapterSort":8684,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic","wiki/2023-10-05-Cplusplus教学/ch18-19-3-std-atomic","std::atomic","18.19.3",18190300,{"path":8686,"stem":8687,"title":8688,"date":8460,"chapter":8689,"chapterSort":8690,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-4-condition-variable","wiki/2023-10-05-Cplusplus教学/ch18-19-4-condition-variable","condition_variable","18.19.4",18190400,{"path":8692,"stem":8693,"title":8694,"date":8460,"chapter":8695,"chapterSort":8696,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng","wiki/2023-10-05-Cplusplus教学/ch18-19-并发编程","并发编程","18.19",18190000,{"path":8698,"stem":8699,"title":8700,"date":8460,"chapter":8701,"chapterSort":8702,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr","wiki/2023-10-05-Cplusplus教学/ch18-2-nullptr","nullptr","18.2",18020000,{"path":8704,"stem":8705,"title":8706,"date":8460,"chapter":8707,"chapterSort":8708,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-20-std-filesystem","wiki/2023-10-05-Cplusplus教学/ch18-20-std-filesystem","std::filesystem","18.20",18200000,{"path":8710,"stem":8711,"title":8712,"date":8460,"chapter":8713,"chapterSort":8714,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-21-modules-jian-jie","wiki/2023-10-05-Cplusplus教学/ch18-21-modules简介","modules 简介","18.21",18210000,{"path":8716,"stem":8717,"title":2590,"date":8460,"chapter":8718,"chapterSort":8719,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-3-using","wiki/2023-10-05-Cplusplus教学/ch18-3-using","18.3",18030000,{"path":8721,"stem":8722,"title":8723,"date":8460,"chapter":8724,"chapterSort":8725,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-4-enum-class","wiki/2023-10-05-Cplusplus教学/ch18-4-enum-class","enum class","18.4",18040000,{"path":8727,"stem":8728,"title":8729,"date":8460,"chapter":8730,"chapterSort":8731,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-5-fan-wei-for-xun-huan","wiki/2023-10-05-Cplusplus教学/ch18-5-范围for循环","范围 for 循环","18.5",18050000,{"path":8733,"stem":8734,"title":8735,"date":8460,"chapter":8736,"chapterSort":8737,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding","wiki/2023-10-05-Cplusplus教学/ch18-6-结构化绑定","结构化绑定","18.6",18060000,{"path":8739,"stem":8740,"title":8741,"date":8460,"chapter":8742,"chapterSort":8743,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-7-constexpr","wiki/2023-10-05-Cplusplus教学/ch18-7-constexpr","constexpr","18.7",18070000,{"path":8745,"stem":8746,"title":8747,"date":8460,"chapter":8748,"chapterSort":8749,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-8-raii","wiki/2023-10-05-Cplusplus教学/ch18-8-RAII","RAII","18.8",18080000,{"path":8751,"stem":8752,"title":8753,"date":8460,"chapter":8754,"chapterSort":8755,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-9-zhi-neng-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch18-9-智能指针","智能指针","18.9",18090000,{"path":8757,"stem":8758,"title":8759,"date":8460,"chapter":8225,"chapterSort":8760,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","wiki/2023-10-05-Cplusplus教学/ch18-现代C++","现代C++",18000000,{"path":8762,"stem":8763,"title":8764,"date":8460,"chapter":8765,"chapterSort":8766,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-1-ding-shi-qi-yu-yi-bu-io","wiki/2023-10-05-Cplusplus教学/ch19-1-1-定时器与异步IO","定时器与异步 IO","19.1.1",19010100,{"path":8768,"stem":8769,"title":8770,"date":8460,"chapter":8771,"chapterSort":8772,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-2-boost-asio-ji-chu","wiki/2023-10-05-Cplusplus教学/ch19-1-2-Boost.Asio基础","Boost.Asio 基础","19.1.2",19010200,{"path":8774,"stem":8775,"title":8776,"date":8460,"chapter":8777,"chapterSort":8778,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-3-chuan-kou-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-3-串口通信","串口通信","19.1.3",19010300,{"path":8780,"stem":8781,"title":8782,"date":8460,"chapter":8783,"chapterSort":8784,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-4-tcp-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-4-TCP通信","TCP 通信","19.1.4",19010400,{"path":8786,"stem":8787,"title":8788,"date":8460,"chapter":8789,"chapterSort":8790,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-5-udp-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-5-UDP通信","UDP 通信","19.1.5",19010500,{"path":8792,"stem":8793,"title":8794,"date":8460,"chapter":8795,"chapterSort":8796,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-6-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch19-1-6-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成","19.1.6",19010600,{"path":8798,"stem":8799,"title":8800,"date":8460,"chapter":8801,"chapterSort":8802,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-boost-asio-yi-bu-io-ku","wiki/2023-10-05-Cplusplus教学/ch19-1-Boost.Asio异步IO库","Boost.Asio异步IO库","19.1",19010000,{"path":8804,"stem":8805,"title":8806,"date":8460,"chapter":8807,"chapterSort":8808,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-2-eigen-xian-xing-dai-shu-ku","wiki/2023-10-05-Cplusplus教学/ch19-2-Eigen线性代数库","Eigen线性代数库","19.2",19020000,{"path":8810,"stem":8811,"title":8812,"date":8460,"chapter":8813,"chapterSort":8814,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-3-opencv-ji-suan-ji-shi-jue-ku","wiki/2023-10-05-Cplusplus教学/ch19-3-OpenCV计算机视觉库","OpenCV计算机视觉库","19.3",19030000,{"path":8816,"stem":8817,"title":8818,"date":8460,"chapter":8819,"chapterSort":8820,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-4-pcl-dian-yun-ku","wiki/2023-10-05-Cplusplus教学/ch19-4-PCL点云库","PCL点云库","19.4",19040000,{"path":8822,"stem":8823,"title":8824,"date":8460,"chapter":8825,"chapterSort":8826,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-5-sophus-li-qun-li-dai-shu-ku","wiki/2023-10-05-Cplusplus教学/ch19-5-Sophus李群李代数库","Sophus 李群李代数库","19.5",19050000,{"path":8828,"stem":8829,"title":8830,"date":8460,"chapter":8831,"chapterSort":8832,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-chang-yong-ku","wiki/2023-10-05-Cplusplus教学/ch19-常用库","常用库学习","19",19000000,{"path":8834,"stem":8835,"title":8836,"date":8460,"chapter":1577,"chapterSort":8837,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch2-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki/2023-10-05-Cplusplus教学/ch2-数据类型与数据存放","数据类型与数据存放",2000000,{"path":8839,"stem":8840,"title":8841,"date":8460,"chapter":1567,"chapterSort":8842,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch3-shu-ru-shu-chu","wiki/2023-10-05-Cplusplus教学/ch3-输入输出","输入输出",3000000,{"path":8844,"stem":8845,"title":8846,"date":8460,"chapter":1582,"chapterSort":8847,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch4-yun-suan-fu","wiki/2023-10-05-Cplusplus教学/ch4-运算符","运算符",4000000,{"path":8849,"stem":8850,"title":8851,"date":8460,"chapter":1552,"chapterSort":8852,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch5-cheng-xu-liu-cheng-jie-gou","wiki/2023-10-05-Cplusplus教学/ch5-程序流程结构","程序流程结构",5000000,{"path":8854,"stem":8855,"title":8856,"date":8460,"chapter":1587,"chapterSort":8857,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch6-shu-zu","wiki/2023-10-05-Cplusplus教学/ch6-数组","数组",6000000,{"path":8859,"stem":8860,"title":8861,"date":8460,"chapter":1547,"chapterSort":8862,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch7-han-shu-yu-tou-wen-jian","wiki/2023-10-05-Cplusplus教学/ch7-函数与头文件","函数与头文件",7000000,{"path":8864,"stem":8865,"title":8866,"date":8460,"chapter":1557,"chapterSort":8867,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch8-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch8-指针","指针",8000000,{"path":8869,"stem":8870,"title":8871,"date":8460,"chapter":1572,"chapterSort":8872,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":8467},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch9-jie-gou-ti-yu-gong-yong-ti","wiki/2023-10-05-Cplusplus教学/ch9-结构体与共用体","结构体与共用体",9000000,{"path":8463,"stem":8874,"title":8875,"date":8460,"chapter":8468,"chapterSort":8876,"docKey":8462,"docRoot":8463,"docTitle":8464,"isWikiDoc":178,"isWikiIndex":178},"wiki/2023-10-05-Cplusplus教学/index","C/C++教程",0,{"variants":8878},[8879,8882,8885,8888,8891],{"path":8880,"localeSlug":8881,"i18nKey":8466},"/en-us/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban","en-us",{"path":8883,"localeSlug":8884,"i18nKey":8466},"/zh-hant/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban","zh-hant",{"path":8886,"localeSlug":8887,"i18nKey":8466},"/zh-hk/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban","zh-hk",{"path":8889,"localeSlug":8890,"i18nKey":8466},"/zh-tw/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban","zh-tw",{"path":8458,"localeSlug":8471,"i18nKey":8466},[8880,8469,8883,8469,8886,8469,8889,8469,8458,8469],1780663032200]