[{"data":1,"prerenderedAt":2410},["ShallowReactive",2],{"wiki-page-\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie":3,"wiki-doc-items-\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie":1988,"language-switcher-data-\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie":2394,"wiki-i18n-paths-\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie":2409},{"id":4,"title":5,"body":6,"canonicalPath":1970,"chapterDepth":106,"chapterOrder":1971,"date":1972,"description":99,"docI18nKey":1973,"docKey":1974,"docRoot":1975,"docTitle":1976,"extension":1977,"i18nKey":1978,"isBlogPost":1979,"isWikiDoc":133,"isWikiIndex":1979,"layout":1980,"legacyPath":1980,"locale":1981,"localeSlug":1982,"meta":1983,"navigation":133,"path":1970,"seo":1984,"sourcePath":1985,"sourceStem":1978,"stem":1986,"wikiDepth":106,"__hash__":1987},"content\u002F_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介.md","modules 簡介",{"type":7,"value":8,"toc":1951},"minimark",[9,13,22,53,56,59,65,69,76,79,90,93,345,351,354,440,444,454,532,535,538,543,552,683,691,824,832,837,923,927,935,939,947,1147,1153,1238,1242,1248,1252,1255,1263,1347,1355,1445,1452,1570,1574,1580,1582,1585,1588,1681,1684,1689,1706,1716,1723,1764,1770,1775,1781,1784,1789,1852,1861,1864,1910,1913,1947],[10,11,12],"h2",{"id":12},"本節解決什麼問題",[14,15,16,17,21],"p",{},"傳統的 ",[18,19,20],"code",{},"#include"," 有三大問題：",[23,24,25,37,47],"ol",{},[26,27,28,32,33,36],"li",{},[29,30,31],"strong",{},"編譯慢","：每個 ",[18,34,35],{},".cpp"," 文件都要重新解析所有 include 的頭文件（可能幾萬行）。",[26,38,39,42,43,46],{},[29,40,41],{},"宏污染","：",[18,44,45],{},"#define"," 會影響所有 include 之後的代碼。",[26,48,49,52],{},[29,50,51],{},"順序依賴","：include 的順序可能影響程序行為。",[14,54,55],{},"Modules 是 C++20 引入的新特性，從根本上解決了這些問題——更快編譯、隔離性好、無宏泄漏。",[10,57,58],{"id":58},"這個特性是什麼",[14,60,61,62,64],{},"Modules 是 C++20 引入的模塊系統。和 ",[18,63,20],{},"（文本複製粘貼）不同，模塊是預編譯的接口聲明，只導出你想暴露的部分，內部實現完全隱藏。",[10,66,68],{"id":67},"c-標準版本","C++ 標準版本",[14,70,71,72,75],{},"C++20（正式引入），C++23 增強了 ",[18,73,74],{},"import std;"," 標準庫模塊。",[10,77,78],{"id":78},"需要的頭文件",[14,80,81,82,85,86,89],{},"Modules 不需要頭文件。模塊文件通常用 ",[18,83,84],{},".cppm"," 擴展名（社區慣例）或 ",[18,87,88],{},".ixx","（MSVC）。",[10,91,92],{"id":92},"基本語法",[94,95,100],"pre",{"className":96,"code":97,"language":98,"meta":99,"style":99},"language-cpp shiki shiki-themes github-light github-dark","\u002F\u002F math_module.cppm —— 模块接口文件\nexport module math;           \u002F\u002F 声明模块名\n\nexport int add(int a, int b)  \u002F\u002F export：对外可见\n{\n    return a + b;\n}\n\nint multiply(int a, int b)    \u002F\u002F 没有 export：模块内部可见\n{\n    return a * b;\n}\n\n\u002F\u002F main.cpp —— 使用模块\nimport math;                  \u002F\u002F 导入模块（替代 #include）\n\nint main()\n{\n    int x = add(3, 5);        \u002F\u002F ✅ 可以访问\n    \u002F\u002F int y = multiply(3, 5); \u002F\u002F ❌ 不可访问（没有 export）\n    return 0;\n}\n","cpp","",[18,101,102,111,128,135,164,170,185,191,196,226,231,243,248,253,259,268,273,284,289,320,329,340],{"__ignoreMap":99},[103,104,107],"span",{"class":105,"line":106},"line",1,[103,108,110],{"class":109},"sJ8bj","\u002F\u002F math_module.cppm —— 模块接口文件\n",[103,112,114,118,121,125],{"class":105,"line":113},2,[103,115,117],{"class":116},"szBVR","export",[103,119,120],{"class":116}," module",[103,122,124],{"class":123},"sVt8B"," math;",[103,126,127],{"class":109},"           \u002F\u002F 声明模块名\n",[103,129,131],{"class":105,"line":130},3,[103,132,134],{"emptyLinePlaceholder":133},true,"\n",[103,136,138,140,143,147,150,153,156,158,161],{"class":105,"line":137},4,[103,139,117],{"class":116},[103,141,142],{"class":116}," int",[103,144,146],{"class":145},"sScJk"," add",[103,148,149],{"class":123},"(",[103,151,152],{"class":116},"int",[103,154,155],{"class":123}," a, ",[103,157,152],{"class":116},[103,159,160],{"class":123}," b)",[103,162,163],{"class":109},"  \u002F\u002F export：对外可见\n",[103,165,167],{"class":105,"line":166},5,[103,168,169],{"class":123},"{\n",[103,171,173,176,179,182],{"class":105,"line":172},6,[103,174,175],{"class":116},"    return",[103,177,178],{"class":123}," a ",[103,180,181],{"class":116},"+",[103,183,184],{"class":123}," b;\n",[103,186,188],{"class":105,"line":187},7,[103,189,190],{"class":123},"}\n",[103,192,194],{"class":105,"line":193},8,[103,195,134],{"emptyLinePlaceholder":133},[103,197,199,201,204,206,208,212,215,217,220,223],{"class":105,"line":198},9,[103,200,152],{"class":116},[103,202,203],{"class":145}," multiply",[103,205,149],{"class":123},[103,207,152],{"class":116},[103,209,211],{"class":210},"s4XuR"," a",[103,213,214],{"class":123},", ",[103,216,152],{"class":116},[103,218,219],{"class":210}," b",[103,221,222],{"class":123},")",[103,224,225],{"class":109},"    \u002F\u002F 没有 export：模块内部可见\n",[103,227,229],{"class":105,"line":228},10,[103,230,169],{"class":123},[103,232,234,236,238,241],{"class":105,"line":233},11,[103,235,175],{"class":116},[103,237,178],{"class":123},[103,239,240],{"class":116},"*",[103,242,184],{"class":123},[103,244,246],{"class":105,"line":245},12,[103,247,190],{"class":123},[103,249,251],{"class":105,"line":250},13,[103,252,134],{"emptyLinePlaceholder":133},[103,254,256],{"class":105,"line":255},14,[103,257,258],{"class":109},"\u002F\u002F main.cpp —— 使用模块\n",[103,260,262,265],{"class":105,"line":261},15,[103,263,264],{"class":123},"import math;",[103,266,267],{"class":109},"                  \u002F\u002F 导入模块（替代 #include）\n",[103,269,271],{"class":105,"line":270},16,[103,272,134],{"emptyLinePlaceholder":133},[103,274,276,278,281],{"class":105,"line":275},17,[103,277,152],{"class":116},[103,279,280],{"class":145}," main",[103,282,283],{"class":123},"()\n",[103,285,287],{"class":105,"line":286},18,[103,288,169],{"class":123},[103,290,292,295,298,301,303,305,309,311,314,317],{"class":105,"line":291},19,[103,293,294],{"class":116},"    int",[103,296,297],{"class":123}," x ",[103,299,300],{"class":116},"=",[103,302,146],{"class":145},[103,304,149],{"class":123},[103,306,308],{"class":307},"sj4cs","3",[103,310,214],{"class":123},[103,312,313],{"class":307},"5",[103,315,316],{"class":123},");",[103,318,319],{"class":109},"        \u002F\u002F ✅ 可以访问\n",[103,321,323,326],{"class":105,"line":322},20,[103,324,325],{"class":109},"    \u002F\u002F int y = multiply(3, 5);",[103,327,328],{"class":109}," \u002F\u002F ❌ 不可访问（没有 export）\n",[103,330,332,334,337],{"class":105,"line":331},21,[103,333,175],{"class":116},[103,335,336],{"class":307}," 0",[103,338,339],{"class":123},";\n",[103,341,343],{"class":105,"line":342},22,[103,344,190],{"class":123},[14,346,347,350],{},[29,348,349],{},"運行結果","：程序正常結束，終端沒有額外輸出。",[10,352,353],{"id":353},"核心概念",[355,356,357,371],"table",{},[358,359,360],"thead",{},[361,362,363,368],"tr",{},[364,365,367],"th",{"align":366},"left","概念",[364,369,370],{"align":366},"説明",[372,373,374,385,394,404,414,427],"tbody",{},[361,375,376,382],{},[377,378,379],"td",{"align":366},[18,380,381],{},"export module 模块名;",[377,383,384],{"align":366},"聲明一個模塊（放在模塊接口文件中）",[361,386,387,391],{},[377,388,389],{"align":366},[18,390,117],{},[377,392,393],{"align":366},"標記對外可見的函數\u002F類\u002F變量",[361,395,396,401],{},[377,397,398],{"align":366},[18,399,400],{},"import 模块名;",[377,402,403],{"align":366},"導入一個模塊",[361,405,406,411],{},[377,407,408],{"align":366},[18,409,410],{},"import \u003C头文件>;",[377,412,413],{"align":366},"導入傳統頭文件（把它當作模塊來用，編譯器支持有限）",[361,415,416,419],{},[377,417,418],{"align":366},"模塊接口單元",[377,420,421,423,424],{"align":366},[18,422,84],{}," 文件，包含 ",[18,425,426],{},"export module",[361,428,429,432],{},[377,430,431],{"align":366},"模塊實現單元",[377,433,434,423,436,439],{"align":366},[18,435,35],{},[18,437,438],{},"module 模块名;","（不帶 export）",[10,441,443],{"id":442},"include-和-module-的核心區別","include 和 module 的核心區別",[14,445,446,447,449,450,453],{},"不要把 modules 理解成\"把 ",[18,448,20],{}," 換成 ",[18,451,452],{},"import","\"這麼簡單。二者的編譯模型不同，所以能解決的問題也不同。",[355,455,456,472],{},[358,457,458],{},[361,459,460,463,467],{},[364,461,462],{"align":366},"對比點",[364,464,465],{"align":366},[18,466,20],{},[364,468,469],{"align":366},[18,470,471],{},"import module",[372,473,474,485,499,510,521],{},[361,475,476,479,482],{},[377,477,478],{"align":366},"工作方式",[377,480,481],{"align":366},"文本複製，把頭文件內容粘進當前文件",[377,483,484],{"align":366},"導入已經編譯好的模塊接口",[361,486,487,490,493],{},[377,488,489],{"align":366},"可見性",[377,491,492],{"align":366},"頭文件裏寫了什麼，包含者基本都能看到",[377,494,495,496,498],{"align":366},"只有 ",[18,497,117],{}," 的名字對外可見",[361,500,501,504,507],{},[377,502,503],{"align":366},"宏",[377,505,506],{"align":366},"宏容易向後污染",[377,508,509],{"align":366},"模塊接口不會像文本包含那樣傳播宏",[361,511,512,515,518],{},[377,513,514],{"align":366},"編譯依賴",[377,516,517],{"align":366},"include 順序可能影響結果",[377,519,520],{"align":366},"模塊依賴更明確",[361,522,523,526,529],{},[377,524,525],{"align":366},"構建要求",[377,527,528],{"align":366},"所有編譯器和構建系統都成熟支持",[377,530,531],{"align":366},"需要較新的編譯器和構建系統",[14,533,534],{},"所以現階段學習 modules，重點是理解\"接口和實現分離得更徹底\"。真正項目中是否遷移，要看工具鏈是否穩定支持。",[10,536,537],{"id":537},"示例代碼",[539,540,542],"h3",{"id":541},"示例-1最簡單的模塊","示例 1：最簡單的模塊",[14,544,545,551],{},[29,546,547,548],{},"文件 1：",[18,549,550],{},"math_module.cppm","（模塊接口）",[94,553,555],{"className":96,"code":554,"language":98,"meta":99,"style":99},"export module math;\n\nexport int add(int a, int b)\n{\n    return a + b;\n}\n\nexport int subtract(int a, int b)\n{\n    return a - b;\n}\n\n\u002F\u002F 内部函数，不对外暴露\nint internal_helper()\n{\n    return 0;\n}\n",[18,556,557,566,570,589,593,603,607,611,630,634,645,649,653,658,667,671,679],{"__ignoreMap":99},[103,558,559,561,563],{"class":105,"line":106},[103,560,117],{"class":116},[103,562,120],{"class":116},[103,564,565],{"class":123}," math;\n",[103,567,568],{"class":105,"line":113},[103,569,134],{"emptyLinePlaceholder":133},[103,571,572,574,576,578,580,582,584,586],{"class":105,"line":130},[103,573,117],{"class":116},[103,575,142],{"class":116},[103,577,146],{"class":145},[103,579,149],{"class":123},[103,581,152],{"class":116},[103,583,155],{"class":123},[103,585,152],{"class":116},[103,587,588],{"class":123}," b)\n",[103,590,591],{"class":105,"line":137},[103,592,169],{"class":123},[103,594,595,597,599,601],{"class":105,"line":166},[103,596,175],{"class":116},[103,598,178],{"class":123},[103,600,181],{"class":116},[103,602,184],{"class":123},[103,604,605],{"class":105,"line":172},[103,606,190],{"class":123},[103,608,609],{"class":105,"line":187},[103,610,134],{"emptyLinePlaceholder":133},[103,612,613,615,617,620,622,624,626,628],{"class":105,"line":193},[103,614,117],{"class":116},[103,616,142],{"class":116},[103,618,619],{"class":145}," subtract",[103,621,149],{"class":123},[103,623,152],{"class":116},[103,625,155],{"class":123},[103,627,152],{"class":116},[103,629,588],{"class":123},[103,631,632],{"class":105,"line":198},[103,633,169],{"class":123},[103,635,636,638,640,643],{"class":105,"line":228},[103,637,175],{"class":116},[103,639,178],{"class":123},[103,641,642],{"class":116},"-",[103,644,184],{"class":123},[103,646,647],{"class":105,"line":233},[103,648,190],{"class":123},[103,650,651],{"class":105,"line":245},[103,652,134],{"emptyLinePlaceholder":133},[103,654,655],{"class":105,"line":250},[103,656,657],{"class":109},"\u002F\u002F 内部函数，不对外暴露\n",[103,659,660,662,665],{"class":105,"line":255},[103,661,152],{"class":116},[103,663,664],{"class":145}," internal_helper",[103,666,283],{"class":123},[103,668,669],{"class":105,"line":261},[103,670,169],{"class":123},[103,672,673,675,677],{"class":105,"line":270},[103,674,175],{"class":116},[103,676,336],{"class":307},[103,678,339],{"class":123},[103,680,681],{"class":105,"line":275},[103,682,190],{"class":123},[14,684,685],{},[29,686,687,688],{},"文件 2：",[18,689,690],{},"main.cpp",[94,692,694],{"className":96,"code":693,"language":98,"meta":99,"style":99},"import math;\n#include \u003Ciostream>\n\nint main()\n{\n    std::cout \u003C\u003C \"add(3, 5) = \" \u003C\u003C add(3, 5) \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"subtract(10, 3) = \" \u003C\u003C subtract(10, 3) \u003C\u003C \"\\n\";\n    \u002F\u002F internal_helper();  \u002F\u002F ❌ 编译错误！没有 export\n    return 0;\n}\n",[18,695,696,701,709,713,721,725,768,804,812,820],{"__ignoreMap":99},[103,697,698],{"class":105,"line":106},[103,699,700],{"class":123},"import math;\n",[103,702,703,705],{"class":105,"line":113},[103,704,20],{"class":116},[103,706,708],{"class":707},"sZZnC"," \u003Ciostream>\n",[103,710,711],{"class":105,"line":130},[103,712,134],{"emptyLinePlaceholder":133},[103,714,715,717,719],{"class":105,"line":137},[103,716,152],{"class":116},[103,718,280],{"class":145},[103,720,283],{"class":123},[103,722,723],{"class":105,"line":166},[103,724,169],{"class":123},[103,726,727,730,733,736,739,742,744,746,748,750,752,755,757,760,763,766],{"class":105,"line":172},[103,728,729],{"class":145},"    std",[103,731,732],{"class":123},"::cout ",[103,734,735],{"class":116},"\u003C\u003C",[103,737,738],{"class":707}," \"add(3, 5) = \"",[103,740,741],{"class":116}," \u003C\u003C",[103,743,146],{"class":145},[103,745,149],{"class":123},[103,747,308],{"class":307},[103,749,214],{"class":123},[103,751,313],{"class":307},[103,753,754],{"class":123},") ",[103,756,735],{"class":116},[103,758,759],{"class":707}," \"",[103,761,762],{"class":307},"\\n",[103,764,765],{"class":707},"\"",[103,767,339],{"class":123},[103,769,770,772,774,776,779,781,783,785,788,790,792,794,796,798,800,802],{"class":105,"line":187},[103,771,729],{"class":145},[103,773,732],{"class":123},[103,775,735],{"class":116},[103,777,778],{"class":707}," \"subtract(10, 3) = \"",[103,780,741],{"class":116},[103,782,619],{"class":145},[103,784,149],{"class":123},[103,786,787],{"class":307},"10",[103,789,214],{"class":123},[103,791,308],{"class":307},[103,793,754],{"class":123},[103,795,735],{"class":116},[103,797,759],{"class":707},[103,799,762],{"class":307},[103,801,765],{"class":707},[103,803,339],{"class":123},[103,805,806,809],{"class":105,"line":193},[103,807,808],{"class":109},"    \u002F\u002F internal_helper();",[103,810,811],{"class":109},"  \u002F\u002F ❌ 编译错误！没有 export\n",[103,813,814,816,818],{"class":105,"line":198},[103,815,175],{"class":116},[103,817,336],{"class":307},[103,819,339],{"class":123},[103,821,822],{"class":105,"line":228},[103,823,190],{"class":123},[14,825,826,828,829,831],{},[29,827,349],{},"：見下方“運行結果”；模塊示例需要先按編譯命令生成模塊接口，再運行 ",[18,830,690],{},"。",[14,833,834,42],{},[29,835,836],{},"編譯命令（以 GCC 為例）",[94,838,842],{"className":839,"code":840,"language":841,"meta":99,"style":99},"language-bash shiki shiki-themes github-light github-dark","# 先编译模块接口\ng++ -std=c++20 -fmodules-ts -c math_module.cppm -o math_module.o\n\n# 再编译主程序\ng++ -std=c++20 -fmodules-ts -c main.cpp -o main.o\n\n# 链接\ng++ math_module.o main.o -o program\n","bash",[18,843,844,849,872,876,881,899,903,908],{"__ignoreMap":99},[103,845,846],{"class":105,"line":106},[103,847,848],{"class":109},"# 先编译模块接口\n",[103,850,851,854,857,860,863,866,869],{"class":105,"line":113},[103,852,853],{"class":145},"g++",[103,855,856],{"class":307}," -std=c++20",[103,858,859],{"class":307}," -fmodules-ts",[103,861,862],{"class":307}," -c",[103,864,865],{"class":707}," math_module.cppm",[103,867,868],{"class":307}," -o",[103,870,871],{"class":707}," math_module.o\n",[103,873,874],{"class":105,"line":130},[103,875,134],{"emptyLinePlaceholder":133},[103,877,878],{"class":105,"line":137},[103,879,880],{"class":109},"# 再编译主程序\n",[103,882,883,885,887,889,891,894,896],{"class":105,"line":166},[103,884,853],{"class":145},[103,886,856],{"class":307},[103,888,859],{"class":307},[103,890,862],{"class":307},[103,892,893],{"class":707}," main.cpp",[103,895,868],{"class":307},[103,897,898],{"class":707}," main.o\n",[103,900,901],{"class":105,"line":172},[103,902,134],{"emptyLinePlaceholder":133},[103,904,905],{"class":105,"line":187},[103,906,907],{"class":109},"# 链接\n",[103,909,910,912,915,918,920],{"class":105,"line":193},[103,911,853],{"class":145},[103,913,914],{"class":707}," math_module.o",[103,916,917],{"class":707}," main.o",[103,919,868],{"class":307},[103,921,922],{"class":707}," program\n",[14,924,925,42],{},[29,926,349],{},[94,928,933],{"className":929,"code":931,"language":932},[930],"language-text","add(3, 5) = 8\nsubtract(10, 3) = 7\n","text",[18,934,931],{"__ignoreMap":99},[539,936,938],{"id":937},"示例-2模塊-類","示例 2：模塊 + 類",[14,940,941],{},[29,942,943,944],{},"文件：",[18,945,946],{},"person_module.cppm",[94,948,950],{"className":96,"code":949,"language":98,"meta":99,"style":99},"export module person;\n\nimport \u003Cstring>;\nimport \u003Ciostream>;\n\nexport class Person\n{\n    std::string name_;\n    int age_;\npublic:\n    Person(const std::string& name, int age)\n        : name_(name), age_(age) {}\n\n    void print() const\n    {\n        std::cout \u003C\u003C name_ \u003C\u003C \", age \" \u003C\u003C age_ \u003C\u003C \"\\n\";\n    }\n};\n",[18,951,952,961,965,981,994,998,1008,1012,1019,1026,1031,1065,1082,1086,1100,1105,1137,1142],{"__ignoreMap":99},[103,953,954,956,958],{"class":105,"line":106},[103,955,117],{"class":116},[103,957,120],{"class":116},[103,959,960],{"class":123}," person;\n",[103,962,963],{"class":105,"line":113},[103,964,134],{"emptyLinePlaceholder":133},[103,966,967,970,973,976,979],{"class":105,"line":130},[103,968,969],{"class":123},"import ",[103,971,972],{"class":116},"\u003C",[103,974,975],{"class":123},"string",[103,977,978],{"class":116},">",[103,980,339],{"class":123},[103,982,983,985,987,990,992],{"class":105,"line":137},[103,984,969],{"class":123},[103,986,972],{"class":116},[103,988,989],{"class":123},"iostream",[103,991,978],{"class":116},[103,993,339],{"class":123},[103,995,996],{"class":105,"line":166},[103,997,134],{"emptyLinePlaceholder":133},[103,999,1000,1002,1005],{"class":105,"line":172},[103,1001,117],{"class":116},[103,1003,1004],{"class":116}," class",[103,1006,1007],{"class":145}," Person\n",[103,1009,1010],{"class":105,"line":187},[103,1011,169],{"class":123},[103,1013,1014,1016],{"class":105,"line":193},[103,1015,729],{"class":145},[103,1017,1018],{"class":123},"::string name_;\n",[103,1020,1021,1023],{"class":105,"line":198},[103,1022,294],{"class":116},[103,1024,1025],{"class":123}," age_;\n",[103,1027,1028],{"class":105,"line":228},[103,1029,1030],{"class":116},"public:\n",[103,1032,1033,1036,1038,1041,1044,1047,1049,1052,1055,1057,1059,1062],{"class":105,"line":233},[103,1034,1035],{"class":145},"    Person",[103,1037,149],{"class":123},[103,1039,1040],{"class":116},"const",[103,1042,1043],{"class":145}," std",[103,1045,1046],{"class":123},"::",[103,1048,975],{"class":145},[103,1050,1051],{"class":116},"&",[103,1053,1054],{"class":210}," name",[103,1056,214],{"class":123},[103,1058,152],{"class":116},[103,1060,1061],{"class":210}," age",[103,1063,1064],{"class":123},")\n",[103,1066,1067,1070,1073,1076,1079],{"class":105,"line":245},[103,1068,1069],{"class":123},"        : ",[103,1071,1072],{"class":145},"name_",[103,1074,1075],{"class":123},"(name), ",[103,1077,1078],{"class":145},"age_",[103,1080,1081],{"class":123},"(age) {}\n",[103,1083,1084],{"class":105,"line":250},[103,1085,134],{"emptyLinePlaceholder":133},[103,1087,1088,1091,1094,1097],{"class":105,"line":255},[103,1089,1090],{"class":116},"    void",[103,1092,1093],{"class":145}," print",[103,1095,1096],{"class":123},"() ",[103,1098,1099],{"class":116},"const\n",[103,1101,1102],{"class":105,"line":261},[103,1103,1104],{"class":123},"    {\n",[103,1106,1107,1110,1112,1114,1117,1119,1122,1124,1127,1129,1131,1133,1135],{"class":105,"line":270},[103,1108,1109],{"class":145},"        std",[103,1111,732],{"class":123},[103,1113,735],{"class":116},[103,1115,1116],{"class":123}," name_ ",[103,1118,735],{"class":116},[103,1120,1121],{"class":707}," \", age \"",[103,1123,741],{"class":116},[103,1125,1126],{"class":123}," age_ ",[103,1128,735],{"class":116},[103,1130,759],{"class":707},[103,1132,762],{"class":307},[103,1134,765],{"class":707},[103,1136,339],{"class":123},[103,1138,1139],{"class":105,"line":275},[103,1140,1141],{"class":123},"    }\n",[103,1143,1144],{"class":105,"line":286},[103,1145,1146],{"class":123},"};\n",[14,1148,1149],{},[29,1150,943,1151],{},[18,1152,690],{},[94,1154,1156],{"className":96,"code":1155,"language":98,"meta":99,"style":99},"import person;\n\nint main()\n{\n    Person p(\"Alice\", 25);\n    p.print();\n\n    \u002F\u002F p.name_ = \"Bob\";  \u002F\u002F ❌ 编译错误！name_ 是 private\n\n    return 0;\n}\n",[18,1157,1158,1163,1167,1175,1179,1199,1210,1214,1222,1226,1234],{"__ignoreMap":99},[103,1159,1160],{"class":105,"line":106},[103,1161,1162],{"class":123},"import person;\n",[103,1164,1165],{"class":105,"line":113},[103,1166,134],{"emptyLinePlaceholder":133},[103,1168,1169,1171,1173],{"class":105,"line":130},[103,1170,152],{"class":116},[103,1172,280],{"class":145},[103,1174,283],{"class":123},[103,1176,1177],{"class":105,"line":137},[103,1178,169],{"class":123},[103,1180,1181,1184,1186,1188,1191,1193,1196],{"class":105,"line":166},[103,1182,1183],{"class":123},"    Person ",[103,1185,14],{"class":145},[103,1187,149],{"class":123},[103,1189,1190],{"class":707},"\"Alice\"",[103,1192,214],{"class":123},[103,1194,1195],{"class":307},"25",[103,1197,1198],{"class":123},");\n",[103,1200,1201,1204,1207],{"class":105,"line":172},[103,1202,1203],{"class":123},"    p.",[103,1205,1206],{"class":145},"print",[103,1208,1209],{"class":123},"();\n",[103,1211,1212],{"class":105,"line":187},[103,1213,134],{"emptyLinePlaceholder":133},[103,1215,1216,1219],{"class":105,"line":193},[103,1217,1218],{"class":109},"    \u002F\u002F p.name_ = \"Bob\";",[103,1220,1221],{"class":109},"  \u002F\u002F ❌ 编译错误！name_ 是 private\n",[103,1223,1224],{"class":105,"line":198},[103,1225,134],{"emptyLinePlaceholder":133},[103,1227,1228,1230,1232],{"class":105,"line":228},[103,1229,175],{"class":116},[103,1231,336],{"class":307},[103,1233,339],{"class":123},[103,1235,1236],{"class":105,"line":233},[103,1237,190],{"class":123},[14,1239,1240,42],{},[29,1241,349],{},[94,1243,1246],{"className":1244,"code":1245,"language":932},[930],"Alice, age 25\n",[18,1247,1245],{"__ignoreMap":99},[539,1249,1251],{"id":1250},"示例-3在示例-2-基礎上把接口和實現拆開","示例 3：在示例 2 基礎上，把接口和實現拆開",[14,1253,1254],{},"示例 1 和示例 2 為了直觀，把實現直接寫在模塊接口裏。真實項目裏更常見的寫法是：接口單元只導出聲明，實現單元放函數體。",[14,1256,1257,1262],{},[29,1258,547,1259],{},[18,1260,1261],{},"counter.cppm","（模塊接口單元）",[94,1264,1266],{"className":96,"code":1265,"language":98,"meta":99,"style":99},"export module counter;\n\nexport class Counter\n{\n    int value_ = 0;\n\npublic:\n    void add(int n);\n    int value() const;\n};\n",[18,1267,1268,1277,1281,1290,1294,1307,1311,1315,1330,1343],{"__ignoreMap":99},[103,1269,1270,1272,1274],{"class":105,"line":106},[103,1271,117],{"class":116},[103,1273,120],{"class":116},[103,1275,1276],{"class":123}," counter;\n",[103,1278,1279],{"class":105,"line":113},[103,1280,134],{"emptyLinePlaceholder":133},[103,1282,1283,1285,1287],{"class":105,"line":130},[103,1284,117],{"class":116},[103,1286,1004],{"class":116},[103,1288,1289],{"class":145}," Counter\n",[103,1291,1292],{"class":105,"line":137},[103,1293,169],{"class":123},[103,1295,1296,1298,1301,1303,1305],{"class":105,"line":166},[103,1297,294],{"class":116},[103,1299,1300],{"class":123}," value_ ",[103,1302,300],{"class":116},[103,1304,336],{"class":307},[103,1306,339],{"class":123},[103,1308,1309],{"class":105,"line":172},[103,1310,134],{"emptyLinePlaceholder":133},[103,1312,1313],{"class":105,"line":187},[103,1314,1030],{"class":116},[103,1316,1317,1319,1321,1323,1325,1328],{"class":105,"line":193},[103,1318,1090],{"class":116},[103,1320,146],{"class":145},[103,1322,149],{"class":123},[103,1324,152],{"class":116},[103,1326,1327],{"class":210}," n",[103,1329,1198],{"class":123},[103,1331,1332,1334,1337,1339,1341],{"class":105,"line":198},[103,1333,294],{"class":116},[103,1335,1336],{"class":145}," value",[103,1338,1096],{"class":123},[103,1340,1040],{"class":116},[103,1342,339],{"class":123},[103,1344,1345],{"class":105,"line":228},[103,1346,1146],{"class":123},[14,1348,1349,1354],{},[29,1350,687,1351],{},[18,1352,1353],{},"counter.cpp","（模塊實現單元）",[94,1356,1358],{"className":96,"code":1357,"language":98,"meta":99,"style":99},"module counter;\n\nvoid Counter::add(int n)\n{\n    value_ += n;\n}\n\nint Counter::value() const\n{\n    return value_;\n}\n",[18,1359,1360,1367,1371,1392,1396,1407,1411,1415,1430,1434,1441],{"__ignoreMap":99},[103,1361,1362,1365],{"class":105,"line":106},[103,1363,1364],{"class":116},"module",[103,1366,1276],{"class":123},[103,1368,1369],{"class":105,"line":113},[103,1370,134],{"emptyLinePlaceholder":133},[103,1372,1373,1376,1379,1381,1384,1386,1388,1390],{"class":105,"line":130},[103,1374,1375],{"class":116},"void",[103,1377,1378],{"class":145}," Counter",[103,1380,1046],{"class":123},[103,1382,1383],{"class":145},"add",[103,1385,149],{"class":123},[103,1387,152],{"class":116},[103,1389,1327],{"class":210},[103,1391,1064],{"class":123},[103,1393,1394],{"class":105,"line":137},[103,1395,169],{"class":123},[103,1397,1398,1401,1404],{"class":105,"line":166},[103,1399,1400],{"class":123},"    value_ ",[103,1402,1403],{"class":116},"+=",[103,1405,1406],{"class":123}," n;\n",[103,1408,1409],{"class":105,"line":172},[103,1410,190],{"class":123},[103,1412,1413],{"class":105,"line":187},[103,1414,134],{"emptyLinePlaceholder":133},[103,1416,1417,1419,1421,1423,1426,1428],{"class":105,"line":193},[103,1418,152],{"class":116},[103,1420,1378],{"class":145},[103,1422,1046],{"class":123},[103,1424,1425],{"class":145},"value",[103,1427,1096],{"class":123},[103,1429,1099],{"class":116},[103,1431,1432],{"class":105,"line":198},[103,1433,169],{"class":123},[103,1435,1436,1438],{"class":105,"line":228},[103,1437,175],{"class":116},[103,1439,1440],{"class":123}," value_;\n",[103,1442,1443],{"class":105,"line":233},[103,1444,190],{"class":123},[14,1446,1447],{},[29,1448,1449,1450],{},"文件 3：",[18,1451,690],{},[94,1453,1455],{"className":96,"code":1454,"language":98,"meta":99,"style":99},"import counter;\n#include \u003Ciostream>\n\nint main()\n{\n    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    Counter c;\n    c.add(3);\n    c.add(5);\n\n    std::cout \u003C\u003C \"counter = \" \u003C\u003C c.value() \u003C\u003C \"\\n\";\n    \u002F\u002F 返回 0 表示程序正常结束。\n    return 0;\n}\n",[18,1456,1457,1462,1468,1472,1480,1484,1489,1494,1507,1519,1523,1553,1558,1566],{"__ignoreMap":99},[103,1458,1459],{"class":105,"line":106},[103,1460,1461],{"class":123},"import counter;\n",[103,1463,1464,1466],{"class":105,"line":113},[103,1465,20],{"class":116},[103,1467,708],{"class":707},[103,1469,1470],{"class":105,"line":130},[103,1471,134],{"emptyLinePlaceholder":133},[103,1473,1474,1476,1478],{"class":105,"line":137},[103,1475,152],{"class":116},[103,1477,280],{"class":145},[103,1479,283],{"class":123},[103,1481,1482],{"class":105,"line":166},[103,1483,169],{"class":123},[103,1485,1486],{"class":105,"line":172},[103,1487,1488],{"class":109},"    \u002F\u002F 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[103,1490,1491],{"class":105,"line":187},[103,1492,1493],{"class":123},"    Counter c;\n",[103,1495,1496,1499,1501,1503,1505],{"class":105,"line":193},[103,1497,1498],{"class":123},"    c.",[103,1500,1383],{"class":145},[103,1502,149],{"class":123},[103,1504,308],{"class":307},[103,1506,1198],{"class":123},[103,1508,1509,1511,1513,1515,1517],{"class":105,"line":198},[103,1510,1498],{"class":123},[103,1512,1383],{"class":145},[103,1514,149],{"class":123},[103,1516,313],{"class":307},[103,1518,1198],{"class":123},[103,1520,1521],{"class":105,"line":228},[103,1522,134],{"emptyLinePlaceholder":133},[103,1524,1525,1527,1529,1531,1534,1536,1539,1541,1543,1545,1547,1549,1551],{"class":105,"line":233},[103,1526,729],{"class":145},[103,1528,732],{"class":123},[103,1530,735],{"class":116},[103,1532,1533],{"class":707}," \"counter = \"",[103,1535,741],{"class":116},[103,1537,1538],{"class":123}," c.",[103,1540,1425],{"class":145},[103,1542,1096],{"class":123},[103,1544,735],{"class":116},[103,1546,759],{"class":707},[103,1548,762],{"class":307},[103,1550,765],{"class":707},[103,1552,339],{"class":123},[103,1554,1555],{"class":105,"line":245},[103,1556,1557],{"class":109},"    \u002F\u002F 返回 0 表示程序正常结束。\n",[103,1559,1560,1562,1564],{"class":105,"line":250},[103,1561,175],{"class":116},[103,1563,336],{"class":307},[103,1565,339],{"class":123},[103,1567,1568],{"class":105,"line":255},[103,1569,190],{"class":123},[14,1571,1572,42],{},[29,1573,349],{},[94,1575,1578],{"className":1576,"code":1577,"language":932},[930],"counter = 8\n",[18,1579,1577],{"__ignoreMap":99},[10,1581,349],{"id":349},[14,1583,1584],{},"見上方每個示例的\"運行結果\"。",[10,1586,1587],{"id":1587},"示例中的關鍵語法解釋",[355,1589,1590,1609],{},[358,1591,1592],{},[361,1593,1594,1597,1600,1603,1606],{},[364,1595,1596],{"align":366},"示例",[364,1598,1599],{"align":366},"講了什麼",[364,1601,1602],{"align":366},"新出現的語法",[364,1604,1605],{"align":366},"為什麼這樣寫",[364,1607,1608],{"align":366},"注意事項",[372,1610,1611,1637,1662],{},[361,1612,1613,1616,1619,1628,1631],{},[377,1614,1615],{"align":366},"示例 1",[377,1617,1618],{"align":366},"基礎模塊定義和導入",[377,1620,1621,1623,1624,1623,1626],{"align":366},[18,1622,426],{},"、",[18,1625,452],{},[18,1627,117],{},[377,1629,1630],{"align":366},"模塊只暴露 export 的內容",[377,1632,1633,1634,1636],{"align":366},"模塊文件名沒有硬性規定，",[18,1635,84],{}," 是社區慣例",[361,1638,1639,1642,1645,1653,1656],{},[377,1640,1641],{"align":366},"示例 2",[377,1643,1644],{"align":366},"模塊中導出類",[377,1646,1647,1623,1650],{"align":366},[18,1648,1649],{},"export class",[18,1651,1652],{},"import \u003Cstring>",[377,1654,1655],{"align":366},"類的 public\u002Fprivate 仍然有效",[377,1657,1658,1661],{"align":366},[18,1659,1660],{},"import \u003Cheader>"," 屬於 header unit，工具鏈支持差異較大",[361,1663,1664,1667,1670,1675,1678],{},[377,1665,1666],{"align":366},"示例 3",[377,1668,1669],{"align":366},"接口單元和實現單元分離",[377,1671,1672],{"align":366},[18,1673,1674],{},"module counter;",[377,1676,1677],{"align":366},"接口只暴露聲明，實現放到單獨文件",[377,1679,1680],{"align":366},"構建系統要知道模塊依賴關係",[10,1682,1683],{"id":1683},"常見錯誤",[14,1685,1686],{},[29,1687,1688],{},"錯誤 1：編譯器不支持或未啓用",[94,1690,1692],{"className":839,"code":1691,"language":841,"meta":99,"style":99},"g++ -std=c++17 main.cpp  # ❌ C++17 没有 modules\n",[18,1693,1694],{"__ignoreMap":99},[103,1695,1696,1698,1701,1703],{"class":105,"line":106},[103,1697,853],{"class":145},[103,1699,1700],{"class":307}," -std=c++17",[103,1702,893],{"class":707},[103,1704,1705],{"class":109},"  # ❌ C++17 没有 modules\n",[14,1707,1708,1709,1712,1713,831],{},"正確做法：用 ",[18,1710,1711],{},"-std=c++20 -fmodules-ts","（GCC\u002FClang），MSVC 用 ",[18,1714,1715],{},"\u002Fstd:c++20",[14,1717,1718],{},[29,1719,1720,1721],{},"錯誤 2：忘記了 ",[18,1722,117],{},[94,1724,1726],{"className":96,"code":1725,"language":98,"meta":99,"style":99},"\u002F\u002F module.cppm\nexport module my_module;\nint func() { return 42; }  \u002F\u002F ❌ 没有 export，外部看不到！\n",[18,1727,1728,1733,1742],{"__ignoreMap":99},[103,1729,1730],{"class":105,"line":106},[103,1731,1732],{"class":109},"\u002F\u002F module.cppm\n",[103,1734,1735,1737,1739],{"class":105,"line":113},[103,1736,117],{"class":116},[103,1738,120],{"class":116},[103,1740,1741],{"class":123}," my_module;\n",[103,1743,1744,1746,1749,1752,1755,1758,1761],{"class":105,"line":130},[103,1745,152],{"class":116},[103,1747,1748],{"class":145}," func",[103,1750,1751],{"class":123},"() { ",[103,1753,1754],{"class":116},"return",[103,1756,1757],{"class":307}," 42",[103,1759,1760],{"class":123},"; }",[103,1762,1763],{"class":109},"  \u002F\u002F ❌ 没有 export，外部看不到！\n",[14,1765,1766,1767],{},"正確做法：",[18,1768,1769],{},"export int func() { return 42; }",[14,1771,1772],{},[29,1773,1774],{},"錯誤 3：編譯順序不對",[14,1776,1777,1778,1780],{},"必須先編譯模塊接口單元（",[18,1779,84],{},"），再編譯使用模塊的文件。",[14,1782,1783],{},"正確做法：用 CMake 3.28+ 或構建系統管理模塊依賴。",[14,1785,1786],{},[29,1787,1788],{},"錯誤 4：把 private 當成模塊隱藏的全部",[94,1790,1792],{"className":96,"code":1791,"language":98,"meta":99,"style":99},"export module demo;\n\nexport class A\n{\nprivate:\n    int value_;\n};\n\nint helper(); \u002F\u002F 没有 export，外部看不到\n",[18,1793,1794,1803,1807,1816,1820,1825,1831,1835,1839],{"__ignoreMap":99},[103,1795,1796,1798,1800],{"class":105,"line":106},[103,1797,117],{"class":116},[103,1799,120],{"class":116},[103,1801,1802],{"class":123}," demo;\n",[103,1804,1805],{"class":105,"line":113},[103,1806,134],{"emptyLinePlaceholder":133},[103,1808,1809,1811,1813],{"class":105,"line":130},[103,1810,117],{"class":116},[103,1812,1004],{"class":116},[103,1814,1815],{"class":145}," A\n",[103,1817,1818],{"class":105,"line":137},[103,1819,169],{"class":123},[103,1821,1822],{"class":105,"line":166},[103,1823,1824],{"class":116},"private:\n",[103,1826,1827,1829],{"class":105,"line":172},[103,1828,294],{"class":116},[103,1830,1440],{"class":123},[103,1832,1833],{"class":105,"line":187},[103,1834,1146],{"class":123},[103,1836,1837],{"class":105,"line":193},[103,1838,134],{"emptyLinePlaceholder":133},[103,1840,1841,1843,1846,1849],{"class":105,"line":198},[103,1842,152],{"class":116},[103,1844,1845],{"class":145}," helper",[103,1847,1848],{"class":123},"();",[103,1850,1851],{"class":109}," \u002F\u002F 没有 export，外部看不到\n",[14,1853,1854,1857,1858,1860],{},[18,1855,1856],{},"private"," 控制的是類成員訪問權限；",[18,1859,117],{}," 控制的是模塊級名字是否對外可見。二者解決的問題不同。",[10,1862,1863],{"id":1863},"使用建議",[23,1865,1866,1875,1881,1889,1898,1904],{},[26,1867,1868,1871,1872,1874],{},[29,1869,1870],{},"現階段可以瞭解但不強制遷移","：C++20 modules 的編譯器支持仍在完善中，傳統 ",[18,1873,20],{}," 在相當長時間內仍是主流。",[26,1876,1877,1880],{},[29,1878,1879],{},"新項目可以嘗試","：如果使用最新編譯器（GCC 15+、Clang 17+、MSVC 2022+），modules 已比較穩定。",[26,1882,1883,42,1886,831],{},[29,1884,1885],{},"CMake 3.28+ 支持 modules",[18,1887,1888],{},"target_sources(myapp PUBLIC FILE_SET CXX_MODULES FILES ...)",[26,1890,1891,1897],{},[29,1892,1893,1894,1896],{},"標準庫模塊 ",[18,1895,74],{}," 是 C++23 的特性","：C++20 只能 import 自定義模塊。",[26,1899,1900,1903],{},[29,1901,1902],{},"理解 modules 的設計思想很重要","：它代表了 C++ 的未來方向。",[26,1905,1906,1909],{},[29,1907,1908],{},"教程裏先學概念，不強背命令","：不同編譯器的模塊命令差異很大，實際項目交給 CMake\u002F構建系統管理更穩。",[10,1911,1912],{"id":1912},"小結",[1914,1915,1916,1922,1930,1938,1941,1944],"ul",{},[26,1917,1918,1919,1921],{},"Modules 是 C++20 的新編譯模型，替代 ",[18,1920,20],{},"，更快、更安全。",[26,1923,1924,1926,1927,1929],{},[18,1925,426],{}," 聲明模塊名，",[18,1928,117],{}," 標記對外可見的聲明。",[26,1931,1932,1934,1935,1937],{},[18,1933,452],{}," 導入模塊（替代 ",[18,1936,20],{},"）。",[26,1939,1940],{},"模塊接口單元負責暴露 API，模塊實現單元負責隱藏實現。",[26,1942,1943],{},"編譯器支持在不斷完善中，可以瞭解但現階段項目中使用需要評估。",[26,1945,1946],{},"學習 modules 的設計有助於理解大型 C++ 項目的模塊化思想。",[1948,1949,1950],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":99,"searchDepth":113,"depth":113,"links":1952},[1953,1954,1955,1956,1957,1958,1959,1960,1965,1966,1967,1968,1969],{"id":12,"depth":113,"text":12},{"id":58,"depth":113,"text":58},{"id":67,"depth":113,"text":68},{"id":78,"depth":113,"text":78},{"id":92,"depth":113,"text":92},{"id":353,"depth":113,"text":353},{"id":442,"depth":113,"text":443},{"id":537,"depth":113,"text":537,"children":1961},[1962,1963,1964],{"id":541,"depth":130,"text":542},{"id":937,"depth":130,"text":938},{"id":1250,"depth":130,"text":1251},{"id":349,"depth":113,"text":349},{"id":1587,"depth":113,"text":1587},{"id":1683,"depth":113,"text":1683},{"id":1863,"depth":113,"text":1863},{"id":1912,"depth":113,"text":1912},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","2000-2100","2023-10-05","wiki\u002F2023-10-05-cplusplus-jiao-xue","zh-hk:2023-10-05-cplusplus-jiao-xue","\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介",false,null,"zh-HK","zh-hk",{},{"title":5,"description":99},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","onB9q1I_zPr-hd6Qtmw8njfHiD3rfFIRwFQeogm2tik",[1989,1995,2000,2005,2010,2015,2020,2025,2030,2035,2040,2045,2050,2055,2060,2065,2070,2075,2080,2085,2090,2095,2100,2105,2110,2115,2120,2125,2130,2135,2140,2145,2150,2155,2160,2165,2170,2175,2180,2185,2190,2195,2200,2205,2210,2215,2220,2225,2230,2235,2240,2245,2250,2255,2260,2265,2270,2275,2280,2285,2290,2295,2296,2301,2306,2311,2316,2321,2326,2331,2336,2341,2346,2351,2356,2361,2366,2371,2376,2381,2386,2391],{"path":1990,"stem":1991,"title":1992,"date":1972,"chapterOrder":1993,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++開發環境搭建與測試","0100",0,{"path":1996,"stem":1997,"title":1998,"date":1972,"chapterOrder":1999,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基礎初識","0200",{"path":2001,"stem":2002,"title":2003,"date":1972,"chapterOrder":2004,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","數據類型與數據存放","0300",{"path":2006,"stem":2007,"title":2008,"date":1972,"chapterOrder":2009,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","輸入輸出","0400",{"path":2011,"stem":2012,"title":2013,"date":1972,"chapterOrder":2014,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","運算符","0500",{"path":2016,"stem":2017,"title":2018,"date":1972,"chapterOrder":2019,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程結構","0600",{"path":2021,"stem":2022,"title":2023,"date":1972,"chapterOrder":2024,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","數組","0700",{"path":2026,"stem":2027,"title":2028,"date":1972,"chapterOrder":2029,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函數與頭文件","0800",{"path":2031,"stem":2032,"title":2033,"date":1972,"chapterOrder":2034,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指針","0900",{"path":2036,"stem":2037,"title":2038,"date":1972,"chapterOrder":2039,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","結構體與共用體","1000",{"path":2041,"stem":2042,"title":2043,"date":1972,"chapterOrder":2044,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","內存分區與生命週期","1100",{"path":2046,"stem":2047,"title":2048,"date":1972,"chapterOrder":2049,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用","1200",{"path":2051,"stem":2052,"title":2053,"date":1972,"chapterOrder":2054,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","函數提高與命名空間","1300",{"path":2056,"stem":2057,"title":2058,"date":1972,"chapterOrder":2059,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封裝","1400-0100",{"path":2061,"stem":2062,"title":2063,"date":1972,"chapterOrder":2064,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","對象初始化和清理","1400-0200",{"path":2066,"stem":2067,"title":2068,"date":1972,"chapterOrder":2069,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","對象模型與this指針","1400-0300",{"path":2071,"stem":2072,"title":2073,"date":1972,"chapterOrder":2074,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","友元與運算符重載","1400-0400",{"path":2076,"stem":2077,"title":2078,"date":1972,"chapterOrder":2079,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","繼承","1400-0500",{"path":2081,"stem":2082,"title":2083,"date":1972,"chapterOrder":2084,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","多態","1400-0600",{"path":2086,"stem":2087,"title":2088,"date":1972,"chapterOrder":2089,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","類和對象","1400",{"path":2091,"stem":2092,"title":2093,"date":1972,"chapterOrder":2094,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作","1500",{"path":2096,"stem":2097,"title":2098,"date":1972,"chapterOrder":2099,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","異常處理","1600",{"path":2101,"stem":2102,"title":2103,"date":1972,"chapterOrder":2104,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板","1700",{"path":2106,"stem":2107,"title":2108,"date":1972,"chapterOrder":2109,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初識","1800-0100",{"path":2111,"stem":2112,"title":2113,"date":1972,"chapterOrder":2114,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":2116,"stem":2117,"title":2118,"date":1972,"chapterOrder":2119,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器","1800-0300",{"path":2121,"stem":2122,"title":2123,"date":1972,"chapterOrder":2124,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":2126,"stem":2127,"title":2128,"date":1972,"chapterOrder":2129,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":2131,"stem":2132,"title":2133,"date":1972,"chapterOrder":2134,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":2136,"stem":2137,"title":2138,"date":1972,"chapterOrder":2139,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue 容器","1800-0700",{"path":2141,"stem":2142,"title":2143,"date":1972,"chapterOrder":2144,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":2146,"stem":2147,"title":2148,"date":1972,"chapterOrder":2149,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":2151,"stem":2152,"title":2153,"date":1972,"chapterOrder":2154,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":2156,"stem":2157,"title":2158,"date":1972,"chapterOrder":2159,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","函數對象與謂詞","1800-1100",{"path":2161,"stem":2162,"title":2163,"date":1972,"chapterOrder":2164,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","常用算法","1800-1200",{"path":2166,"stem":2167,"title":2168,"date":1972,"chapterOrder":2169,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高編程","1800",{"path":2171,"stem":2172,"title":2173,"date":1972,"chapterOrder":2174,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++類型轉換","1900",{"path":2176,"stem":2177,"title":2178,"date":1972,"chapterOrder":2179,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto","2000-0100",{"path":2181,"stem":2182,"title":2183,"date":1972,"chapterOrder":2184,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr","nullptr","2000-0200",{"path":2186,"stem":2187,"title":2188,"date":1972,"chapterOrder":2189,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":2191,"stem":2192,"title":2193,"date":1972,"chapterOrder":2194,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":2196,"stem":2197,"title":2198,"date":1972,"chapterOrder":2199,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","範圍 for 循環","2000-0500",{"path":2201,"stem":2202,"title":2203,"date":1972,"chapterOrder":2204,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","結構化綁定","2000-0600",{"path":2206,"stem":2207,"title":2208,"date":1972,"chapterOrder":2209,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":2211,"stem":2212,"title":2213,"date":1972,"chapterOrder":2214,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":2216,"stem":2217,"title":2218,"date":1972,"chapterOrder":2219,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指針","2000-0900",{"path":2221,"stem":2222,"title":2223,"date":1972,"chapterOrder":2224,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","右值引用和移動語義","2000-1000",{"path":2226,"stem":2227,"title":2228,"date":1972,"chapterOrder":2229,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda 表達式","2000-1100",{"path":2231,"stem":2232,"title":2233,"date":1972,"chapterOrder":2234,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":2236,"stem":2237,"title":2238,"date":1972,"chapterOrder":2239,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":2241,"stem":2242,"title":2243,"date":1972,"chapterOrder":2244,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":2246,"stem":2247,"title":2248,"date":1972,"chapterOrder":2249,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":2251,"stem":2252,"title":2253,"date":1972,"chapterOrder":2254,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":2256,"stem":2257,"title":2258,"date":1972,"chapterOrder":2259,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":2261,"stem":2262,"title":2263,"date":1972,"chapterOrder":2264,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":2266,"stem":2267,"title":2268,"date":1972,"chapterOrder":2269,"chapterDepth":113,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread 與 join","2000-1900-0100",{"path":2271,"stem":2272,"title":2273,"date":1972,"chapterOrder":2274,"chapterDepth":113,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 與 lock_guard","2000-1900-0200",{"path":2276,"stem":2277,"title":2278,"date":1972,"chapterOrder":2279,"chapterDepth":113,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":2281,"stem":2282,"title":2283,"date":1972,"chapterOrder":2284,"chapterDepth":113,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":2286,"stem":2287,"title":2288,"date":1972,"chapterOrder":2289,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","併發編程","2000-1900",{"path":2291,"stem":2292,"title":2293,"date":1972,"chapterOrder":2294,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":1970,"stem":1986,"title":5,"date":1972,"chapterOrder":1971,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},{"path":2297,"stem":2298,"title":2299,"date":1972,"chapterOrder":2300,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","現代C++","2000",{"path":2302,"stem":2303,"title":2304,"date":1972,"chapterOrder":2305,"chapterDepth":113,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","定時器與異步 IO","2100-0100-0100",{"path":2307,"stem":2308,"title":2309,"date":1972,"chapterOrder":2310,"chapterDepth":113,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio 基礎","2100-0100-0200",{"path":2312,"stem":2313,"title":2314,"date":1972,"chapterOrder":2315,"chapterDepth":113,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","串口通信","2100-0100-0300",{"path":2317,"stem":2318,"title":2319,"date":1972,"chapterOrder":2320,"chapterDepth":113,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP 通信","2100-0100-0400",{"path":2322,"stem":2323,"title":2324,"date":1972,"chapterOrder":2325,"chapterDepth":113,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP 通信","2100-0100-0500",{"path":2327,"stem":2328,"title":2329,"date":1972,"chapterOrder":2330,"chapterDepth":113,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","機器人工程寫法與 ROS2 集成","2100-0100-0600",{"path":2332,"stem":2333,"title":2334,"date":1972,"chapterOrder":2335,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio異步IO庫","2100-0100",{"path":2337,"stem":2338,"title":2339,"date":1972,"chapterOrder":2340,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen線性代數庫","2100-0200",{"path":2342,"stem":2343,"title":2344,"date":1972,"chapterOrder":2345,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV計算機視覺庫","2100-0300",{"path":2347,"stem":2348,"title":2349,"date":1972,"chapterOrder":2350,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL點雲庫","2100-0400",{"path":2352,"stem":2353,"title":2354,"date":1972,"chapterOrder":2355,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus 李羣李代數庫","2100-0500",{"path":2357,"stem":2358,"title":2359,"date":1972,"chapterOrder":2360,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用庫學習","2100",{"path":2362,"stem":2363,"title":2364,"date":1972,"chapterOrder":2365,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets與構建安裝","2200-0100",{"path":2367,"stem":2368,"title":2369,"date":1972,"chapterOrder":2370,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","頂層CMake與公共編譯選項","2200-0200",{"path":2372,"stem":2373,"title":2374,"date":1972,"chapterOrder":2375,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","src與lib模塊CMake詳解","2200-0300",{"path":2377,"stem":2378,"title":2379,"date":1972,"chapterOrder":2380,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","第三方庫依賴寫法","2200-0400",{"path":2382,"stem":2383,"title":2384,"date":1972,"chapterOrder":2385,"chapterDepth":106,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","模板擴展與常見問題","2200-0500",{"path":2387,"stem":2388,"title":2389,"date":1972,"chapterOrder":2390,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":1979},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板","2200",{"path":1975,"stem":2392,"title":2393,"date":1972,"chapterOrder":1980,"chapterDepth":1994,"docKey":1974,"docRoot":1975,"docTitle":1976,"isWikiDoc":133,"isWikiIndex":133},"_i18n\u002Fzh-hk\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",{"variants":2395},[2396,2399,2402,2403,2406],{"path":2397,"localeSlug":2398,"i18nKey":1978},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","en-us",{"path":2400,"localeSlug":2401,"i18nKey":1978},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","zh-hant",{"path":1970,"localeSlug":1982,"i18nKey":1978},{"path":2404,"localeSlug":2405,"i18nKey":1978},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","zh-tw",{"path":2407,"localeSlug":2408,"i18nKey":1978},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","zh-cn",[2397,1985,2400,1985,1970,1985,2404,1985,2407,1985],1784646842934]