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