[{"data":1,"prerenderedAt":2592},["ShallowReactive",2],{"wiki-page-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr":3,"wiki-doc-items-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr":2162,"language-switcher-data-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr":2576,"wiki-i18n-paths-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr":2591},{"id":4,"title":5,"body":6,"canonicalPath":2144,"chapter":2145,"chapterSort":2146,"date":2147,"description":106,"docI18nKey":2148,"docKey":2149,"docRoot":2150,"docTitle":2151,"extension":2152,"i18nKey":2153,"isBlogPost":2154,"isWikiDoc":184,"isWikiIndex":2154,"layout":2155,"legacyPath":2156,"locale":2157,"localeSlug":2158,"meta":2159,"navigation":184,"path":2144,"seo":2160,"sourcePath":2156,"sourceStem":2153,"stem":2153,"wikiDepth":113,"__hash__":2161},"content/wiki/2023-10-05-Cplusplus教学/ch18-2-nullptr.md","nullptr",{"type":7,"value":8,"toc":2124},"minimark",[9,13,26,53,58,61,74,78,81,84,97,100,237,240,311,315,320,411,414,419,687,693,701,705,1002,1006,1012,1016,1373,1377,1383,1387,1741,1745,1751,1753,1756,1759,1869,1872,1877,1925,1931,1939,1959,1962,1970,1991,2001,2006,2027,2035,2038,2083,2086,2120],[10,11,12],"h2",{"id":12},"本节解决什么问题",[14,15,16,17,21,22,25],"p",{},"在传统 C/C++ 中，用 ",[18,19,20],"code",{},"NULL"," 或 ",[18,23,24],{},"0"," 表示空指针。但这有问题：",[27,28,29,47],"ul",{},[30,31,32,34,35,37,38,41,42,46],"li",{},[18,33,20],{}," 实际上就是 ",[18,36,24],{},"（在 C++ 中定义为 ",[18,39,40],{},"#define NULL 0","），它会被当作",[43,44,45],"strong",{},"整数","来处理，导致类型不匹配。",[30,48,49,50,52],{},"在某些重载函数中，",[18,51,20],{}," 可能匹配到整数版本的函数而非指针版本。",[14,54,55,57],{},[18,56,5],{}," 是真正的\"空指针类型\"，解决了这些类型安全问题。",[10,59,60],{"id":60},"这个特性是什么",[14,62,63,65,66,69,70,73],{},[18,64,5],{}," 是 C++11 引入的关键字，类型是 ",[18,67,68],{},"std::nullptr_t","，可以隐式转换为任何类型的指针，但",[43,71,72],{},"不能","隐式转换为整数类型。这让编译器能区分\"空指针\"和\"整数 0\"。",[10,75,77],{"id":76},"c-标准版本","C++ 标准版本",[14,79,80],{},"C++11",[10,82,83],{"id":83},"需要的头文件",[14,85,86,87,89,90,92,93,96],{},"不需要额外头文件。",[18,88,5],{}," 是语言关键字。如果需要使用 ",[18,91,68],{}," 类型，需要 ",[18,94,95],{},"#include \u003Ccstddef>","。",[10,98,99],{"id":99},"基本语法",[101,102,107],"pre",{"className":103,"code":104,"language":105,"meta":106,"style":106},"language-cpp shiki shiki-themes github-light github-dark","int* p = nullptr;           // 空 int 指针\ndouble* d = nullptr;        // 空 double 指针\nstd::shared_ptr\u003Cint> sp = nullptr;  // 空智能指针\n\n// 判断空指针\nif (p == nullptr) { ... }\nif (!p) { ... }             // 等价写法\nif (p) { ... }              // p 非空\n","cpp","",[18,108,109,136,154,179,186,192,209,226],{"__ignoreMap":106},[110,111,114,118,122,125,129,132],"span",{"class":112,"line":113},"line",1,[110,115,117],{"class":116},"szBVR","int*",[110,119,121],{"class":120},"sVt8B"," p ",[110,123,124],{"class":116},"=",[110,126,128],{"class":127},"sj4cs"," nullptr",[110,130,131],{"class":120},";",[110,133,135],{"class":134},"sJ8bj","           // 空 int 指针\n",[110,137,139,142,145,147,149,151],{"class":112,"line":138},2,[110,140,141],{"class":116},"double*",[110,143,144],{"class":120}," d ",[110,146,124],{"class":116},[110,148,128],{"class":127},[110,150,131],{"class":120},[110,152,153],{"class":134},"        // 空 double 指针\n",[110,155,157,161,164,167,170,172,174,176],{"class":112,"line":156},3,[110,158,160],{"class":159},"sScJk","std",[110,162,163],{"class":120},"::shared_ptr",[110,165,166],{"class":116},"\u003Cint>",[110,168,169],{"class":120}," sp ",[110,171,124],{"class":116},[110,173,128],{"class":127},[110,175,131],{"class":120},[110,177,178],{"class":134},"  // 空智能指针\n",[110,180,182],{"class":112,"line":181},4,[110,183,185],{"emptyLinePlaceholder":184},true,"\n",[110,187,189],{"class":112,"line":188},5,[110,190,191],{"class":134},"// 判断空指针\n",[110,193,195,198,201,204,206],{"class":112,"line":194},6,[110,196,197],{"class":116},"if",[110,199,200],{"class":120}," (p ",[110,202,203],{"class":116},"==",[110,205,128],{"class":127},[110,207,208],{"class":120},") { ... }\n",[110,210,212,214,217,220,223],{"class":112,"line":211},7,[110,213,197],{"class":116},[110,215,216],{"class":120}," (",[110,218,219],{"class":116},"!",[110,221,222],{"class":120},"p) { ... }",[110,224,225],{"class":134},"             // 等价写法\n",[110,227,229,231,234],{"class":112,"line":228},8,[110,230,197],{"class":116},[110,232,233],{"class":120}," (p) { ... }",[110,235,236],{"class":134},"              // p 非空\n",[10,238,239],{"id":239},"常用用法",[241,242,243,257],"table",{},[244,245,246],"thead",{},[247,248,249,254],"tr",{},[250,251,253],"th",{"align":252},"left","用法",[250,255,256],{"align":252},"说明",[258,259,260,271,281,291,301],"tbody",{},[247,261,262,268],{},[263,264,265],"td",{"align":252},[18,266,267],{},"int* p = nullptr;",[263,269,270],{"align":252},"初始化空指针",[247,272,273,278],{},[263,274,275],{"align":252},[18,276,277],{},"p == nullptr",[263,279,280],{"align":252},"判断是否为 nullptr",[247,282,283,288],{},[263,284,285],{"align":252},[18,286,287],{},"if (ptr)",[263,289,290],{"align":252},"判断非空",[247,292,293,298],{},[263,294,295],{"align":252},[18,296,297],{},"func(nullptr)",[263,299,300],{"align":252},"传递空指针参数",[247,302,303,308],{},[263,304,305],{"align":252},[18,306,307],{},"return nullptr;",[263,309,310],{"align":252},"返回空指针",[10,312,314],{"id":313},"nullptr-和其他空的区别","nullptr 和其他\"空\"的区别",[14,316,317,319],{},[18,318,5],{}," 只表示\"没有指向任何对象的指针\"。它不是整数 0，也不是空字符串，更不是容器为空。",[241,321,322,335],{},[244,323,324],{},[247,325,326,329,332],{},[250,327,328],{"align":252},"表达含义",[250,330,331],{"align":252},"推荐写法",[250,333,334],{"align":252},"不要混用",[258,336,337,354,367,385,398],{},[247,338,339,342,347],{},[263,340,341],{"align":252},"空指针",[263,343,344],{"align":252},[18,345,346],{},"T* p = nullptr;",[263,348,349,350,21,352],{"align":252},"不要写 ",[18,351,20],{},[18,353,24],{},[247,355,356,359,364],{},[263,357,358],{"align":252},"空智能指针",[263,360,361],{"align":252},[18,362,363],{},"std::shared_ptr\u003CT> p = nullptr;",[263,365,366],{"align":252},"不要手动 new/delete",[247,368,369,372,380],{},[263,370,371],{"align":252},"空字符串",[263,373,374,21,377],{"align":252},[18,375,376],{},"std::string s;",[18,378,379],{},"\"\"",[263,381,382,383],{"align":252},"不要用 ",[18,384,5],{},[247,386,387,390,395],{},[263,388,389],{"align":252},"可能没有返回值",[263,391,392],{"align":252},[18,393,394],{},"std::optional\u003CT>",[263,396,397],{"align":252},"不要硬塞一个\"特殊值\"",[247,399,400,403,408],{},[263,401,402],{"align":252},"容器为空",[263,404,405],{"align":252},[18,406,407],{},"v.empty()",[263,409,410],{"align":252},"不要和指针是否为空混淆",[10,412,413],{"id":413},"示例代码",[415,416,418],"h3",{"id":417},"示例-1nullptr-基本使用","示例 1：nullptr 基本使用",[101,420,422],{"className":103,"code":421,"language":105,"meta":106,"style":106},"#include \u003Ciostream>\n#include \u003Ccstddef>\n\nint main()\n{\n    int* p1 = nullptr;    // 空指针初始化\n    int* p2 = 0;           // 旧写法（用 0 赋给指针）\n    int* p3 = NULL;        // 旧写法（NULL 实际上还是 0）\n\n    // 三种写法在简单的场景下等价\n    std::cout \u003C\u003C \"p1 = \" \u003C\u003C p1 \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"p2 = \" \u003C\u003C p2 \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"p3 = \" \u003C\u003C p3 \u003C\u003C \"\\n\";\n\n    // 判断空指针\n    if (p1 == nullptr)\n    {\n        std::cout \u003C\u003C \"p1 is null\\n\";\n    }\n\n    return 0;\n}\n",[18,423,424,433,440,444,455,460,477,494,511,516,522,556,582,608,613,619,635,641,660,666,671,681],{"__ignoreMap":106},[110,425,426,429],{"class":112,"line":113},[110,427,428],{"class":116},"#include",[110,430,432],{"class":431},"sZZnC"," \u003Ciostream>\n",[110,434,435,437],{"class":112,"line":138},[110,436,428],{"class":116},[110,438,439],{"class":431}," \u003Ccstddef>\n",[110,441,442],{"class":112,"line":156},[110,443,185],{"emptyLinePlaceholder":184},[110,445,446,449,452],{"class":112,"line":181},[110,447,448],{"class":116},"int",[110,450,451],{"class":159}," main",[110,453,454],{"class":120},"()\n",[110,456,457],{"class":112,"line":188},[110,458,459],{"class":120},"{\n",[110,461,462,465,468,470,472,474],{"class":112,"line":194},[110,463,464],{"class":116},"    int*",[110,466,467],{"class":120}," p1 ",[110,469,124],{"class":116},[110,471,128],{"class":127},[110,473,131],{"class":120},[110,475,476],{"class":134},"    // 空指针初始化\n",[110,478,479,481,484,486,489,491],{"class":112,"line":211},[110,480,464],{"class":116},[110,482,483],{"class":120}," p2 ",[110,485,124],{"class":116},[110,487,488],{"class":127}," 0",[110,490,131],{"class":120},[110,492,493],{"class":134},"           // 旧写法（用 0 赋给指针）\n",[110,495,496,498,501,503,506,508],{"class":112,"line":228},[110,497,464],{"class":116},[110,499,500],{"class":120}," p3 ",[110,502,124],{"class":116},[110,504,505],{"class":127}," NULL",[110,507,131],{"class":120},[110,509,510],{"class":134},"        // 旧写法（NULL 实际上还是 0）\n",[110,512,514],{"class":112,"line":513},9,[110,515,185],{"emptyLinePlaceholder":184},[110,517,519],{"class":112,"line":518},10,[110,520,521],{"class":134},"    // 三种写法在简单的场景下等价\n",[110,523,525,528,531,534,537,540,542,544,547,550,553],{"class":112,"line":524},11,[110,526,527],{"class":159},"    std",[110,529,530],{"class":120},"::cout ",[110,532,533],{"class":116},"\u003C\u003C",[110,535,536],{"class":431}," \"p1 = \"",[110,538,539],{"class":116}," \u003C\u003C",[110,541,467],{"class":120},[110,543,533],{"class":116},[110,545,546],{"class":431}," \"",[110,548,549],{"class":127},"\\n",[110,551,552],{"class":431},"\"",[110,554,555],{"class":120},";\n",[110,557,559,561,563,565,568,570,572,574,576,578,580],{"class":112,"line":558},12,[110,560,527],{"class":159},[110,562,530],{"class":120},[110,564,533],{"class":116},[110,566,567],{"class":431}," \"p2 = \"",[110,569,539],{"class":116},[110,571,483],{"class":120},[110,573,533],{"class":116},[110,575,546],{"class":431},[110,577,549],{"class":127},[110,579,552],{"class":431},[110,581,555],{"class":120},[110,583,585,587,589,591,594,596,598,600,602,604,606],{"class":112,"line":584},13,[110,586,527],{"class":159},[110,588,530],{"class":120},[110,590,533],{"class":116},[110,592,593],{"class":431}," \"p3 = \"",[110,595,539],{"class":116},[110,597,500],{"class":120},[110,599,533],{"class":116},[110,601,546],{"class":431},[110,603,549],{"class":127},[110,605,552],{"class":431},[110,607,555],{"class":120},[110,609,611],{"class":112,"line":610},14,[110,612,185],{"emptyLinePlaceholder":184},[110,614,616],{"class":112,"line":615},15,[110,617,618],{"class":134},"    // 判断空指针\n",[110,620,622,625,628,630,632],{"class":112,"line":621},16,[110,623,624],{"class":116},"    if",[110,626,627],{"class":120}," (p1 ",[110,629,203],{"class":116},[110,631,128],{"class":127},[110,633,634],{"class":120},")\n",[110,636,638],{"class":112,"line":637},17,[110,639,640],{"class":120},"    {\n",[110,642,644,647,649,651,654,656,658],{"class":112,"line":643},18,[110,645,646],{"class":159},"        std",[110,648,530],{"class":120},[110,650,533],{"class":116},[110,652,653],{"class":431}," \"p1 is null",[110,655,549],{"class":127},[110,657,552],{"class":431},[110,659,555],{"class":120},[110,661,663],{"class":112,"line":662},19,[110,664,665],{"class":120},"    }\n",[110,667,669],{"class":112,"line":668},20,[110,670,185],{"emptyLinePlaceholder":184},[110,672,674,677,679],{"class":112,"line":673},21,[110,675,676],{"class":116},"    return",[110,678,488],{"class":127},[110,680,555],{"class":120},[110,682,684],{"class":112,"line":683},22,[110,685,686],{"class":120},"}\n",[14,688,689,692],{},[43,690,691],{},"运行结果","：",[101,694,699],{"className":695,"code":697,"language":698},[696],"language-text","p1 = 0\np2 = 0\np3 = 0\np1 is null\n","text",[18,700,697],{"__ignoreMap":106},[415,702,704],{"id":703},"示例-2在示例-1-基础上nullptr-解决重载歧义","示例 2：在示例 1 基础上，nullptr 解决重载歧义",[101,706,708],{"className":103,"code":707,"language":105,"meta":106,"style":106},"#include \u003Ciostream>\n\n// 两个重载函数\nvoid process(int n)\n{\n    std::cout \u003C\u003C \"process(int): \" \u003C\u003C n \u003C\u003C \"\\n\";\n}\n\nvoid process(int* p)\n{\n    if (p == nullptr)\n    {\n        std::cout \u003C\u003C \"process(int*): nullptr\\n\";\n    }\n    else\n    {\n        std::cout \u003C\u003C \"process(int*): \" \u003C\u003C *p \u003C\u003C \"\\n\";\n    }\n}\n\nint main()\n{\n    process(42);        // 调用 process(int)\n    process(nullptr);   // 调用 process(int*)，明确是指针版本\n\n    // process(NULL);   // ❌ 有歧义！编译器不知道调哪个\n    // process(0);      // ❌ 同样的问题！0 匹配 process(int)\n\n    int* p = nullptr;\n    process(p);         // 调用 process(int*)\n\n    return 0;\n}\n",[18,709,710,716,720,725,744,748,774,778,782,797,801,813,817,834,838,843,847,876,880,884,888,896,900,917,931,936,945,954,959,972,983,988,997],{"__ignoreMap":106},[110,711,712,714],{"class":112,"line":113},[110,713,428],{"class":116},[110,715,432],{"class":431},[110,717,718],{"class":112,"line":138},[110,719,185],{"emptyLinePlaceholder":184},[110,721,722],{"class":112,"line":156},[110,723,724],{"class":134},"// 两个重载函数\n",[110,726,727,730,733,736,738,742],{"class":112,"line":181},[110,728,729],{"class":116},"void",[110,731,732],{"class":159}," process",[110,734,735],{"class":120},"(",[110,737,448],{"class":116},[110,739,741],{"class":740},"s4XuR"," n",[110,743,634],{"class":120},[110,745,746],{"class":112,"line":188},[110,747,459],{"class":120},[110,749,750,752,754,756,759,761,764,766,768,770,772],{"class":112,"line":194},[110,751,527],{"class":159},[110,753,530],{"class":120},[110,755,533],{"class":116},[110,757,758],{"class":431}," \"process(int): \"",[110,760,539],{"class":116},[110,762,763],{"class":120}," n ",[110,765,533],{"class":116},[110,767,546],{"class":431},[110,769,549],{"class":127},[110,771,552],{"class":431},[110,773,555],{"class":120},[110,775,776],{"class":112,"line":211},[110,777,686],{"class":120},[110,779,780],{"class":112,"line":228},[110,781,185],{"emptyLinePlaceholder":184},[110,783,784,786,788,790,792,795],{"class":112,"line":513},[110,785,729],{"class":116},[110,787,732],{"class":159},[110,789,735],{"class":120},[110,791,117],{"class":116},[110,793,794],{"class":740}," p",[110,796,634],{"class":120},[110,798,799],{"class":112,"line":518},[110,800,459],{"class":120},[110,802,803,805,807,809,811],{"class":112,"line":524},[110,804,624],{"class":116},[110,806,200],{"class":120},[110,808,203],{"class":116},[110,810,128],{"class":127},[110,812,634],{"class":120},[110,814,815],{"class":112,"line":558},[110,816,640],{"class":120},[110,818,819,821,823,825,828,830,832],{"class":112,"line":584},[110,820,646],{"class":159},[110,822,530],{"class":120},[110,824,533],{"class":116},[110,826,827],{"class":431}," \"process(int*): nullptr",[110,829,549],{"class":127},[110,831,552],{"class":431},[110,833,555],{"class":120},[110,835,836],{"class":112,"line":610},[110,837,665],{"class":120},[110,839,840],{"class":112,"line":615},[110,841,842],{"class":116},"    else\n",[110,844,845],{"class":112,"line":621},[110,846,640],{"class":120},[110,848,849,851,853,855,858,860,863,866,868,870,872,874],{"class":112,"line":637},[110,850,646],{"class":159},[110,852,530],{"class":120},[110,854,533],{"class":116},[110,856,857],{"class":431}," \"process(int*): \"",[110,859,539],{"class":116},[110,861,862],{"class":116}," *",[110,864,865],{"class":120},"p ",[110,867,533],{"class":116},[110,869,546],{"class":431},[110,871,549],{"class":127},[110,873,552],{"class":431},[110,875,555],{"class":120},[110,877,878],{"class":112,"line":643},[110,879,665],{"class":120},[110,881,882],{"class":112,"line":662},[110,883,686],{"class":120},[110,885,886],{"class":112,"line":668},[110,887,185],{"emptyLinePlaceholder":184},[110,889,890,892,894],{"class":112,"line":673},[110,891,448],{"class":116},[110,893,451],{"class":159},[110,895,454],{"class":120},[110,897,898],{"class":112,"line":683},[110,899,459],{"class":120},[110,901,903,906,908,911,914],{"class":112,"line":902},23,[110,904,905],{"class":159},"    process",[110,907,735],{"class":120},[110,909,910],{"class":127},"42",[110,912,913],{"class":120},");",[110,915,916],{"class":134},"        // 调用 process(int)\n",[110,918,920,922,924,926,928],{"class":112,"line":919},24,[110,921,905],{"class":159},[110,923,735],{"class":120},[110,925,5],{"class":127},[110,927,913],{"class":120},[110,929,930],{"class":134},"   // 调用 process(int*)，明确是指针版本\n",[110,932,934],{"class":112,"line":933},25,[110,935,185],{"emptyLinePlaceholder":184},[110,937,939,942],{"class":112,"line":938},26,[110,940,941],{"class":134},"    // process(NULL);",[110,943,944],{"class":134},"   // ❌ 有歧义！编译器不知道调哪个\n",[110,946,948,951],{"class":112,"line":947},27,[110,949,950],{"class":134},"    // process(0);",[110,952,953],{"class":134},"      // ❌ 同样的问题！0 匹配 process(int)\n",[110,955,957],{"class":112,"line":956},28,[110,958,185],{"emptyLinePlaceholder":184},[110,960,962,964,966,968,970],{"class":112,"line":961},29,[110,963,464],{"class":116},[110,965,121],{"class":120},[110,967,124],{"class":116},[110,969,128],{"class":127},[110,971,555],{"class":120},[110,973,975,977,980],{"class":112,"line":974},30,[110,976,905],{"class":159},[110,978,979],{"class":120},"(p);",[110,981,982],{"class":134},"         // 调用 process(int*)\n",[110,984,986],{"class":112,"line":985},31,[110,987,185],{"emptyLinePlaceholder":184},[110,989,991,993,995],{"class":112,"line":990},32,[110,992,676],{"class":116},[110,994,488],{"class":127},[110,996,555],{"class":120},[110,998,1000],{"class":112,"line":999},33,[110,1001,686],{"class":120},[14,1003,1004,692],{},[43,1005,691],{},[101,1007,1010],{"className":1008,"code":1009,"language":698},[696],"process(int): 42\nprocess(int*): nullptr\nprocess(int*): nullptr\n",[18,1011,1009],{"__ignoreMap":106},[415,1013,1015],{"id":1014},"示例-3在示例-2-基础上nullptr-在模板和智能指针中的应用","示例 3：在示例 2 基础上，nullptr 在模板和智能指针中的应用",[101,1017,1019],{"className":103,"code":1018,"language":105,"meta":106,"style":106},"#include \u003Ciostream>\n#include \u003Cmemory>\n\ntemplate \u003Ctypename T>\nvoid check_ptr(T* ptr)\n{\n    if (ptr == nullptr)\n    {\n        std::cout \u003C\u003C \"pointer is null\\n\";\n    }\n    else\n    {\n        std::cout \u003C\u003C \"pointer value = \" \u003C\u003C *ptr \u003C\u003C \"\\n\";\n    }\n}\n\nint main()\n{\n    // 原始指针初始化为空\n    int* rp = nullptr;\n    check_ptr(rp);\n\n    // 智能指针初始化为空\n    std::shared_ptr\u003Cint> sp = nullptr;\n    // 智能指针也可直接用 bool 判断\n    if (!sp)\n    {\n        std::cout \u003C\u003C \"shared_ptr is null\\n\";\n    }\n\n    // 创建后赋值\n    sp = std::make_shared\u003Cint>(100);\n    if (sp)\n    {\n        std::cout \u003C\u003C \"shared_ptr value = \" \u003C\u003C *sp \u003C\u003C \"\\n\";\n    }\n\n    return 0;\n}\n",[18,1020,1021,1027,1034,1038,1055,1075,1079,1092,1096,1113,1117,1121,1125,1153,1157,1161,1165,1173,1177,1182,1195,1203,1207,1212,1228,1233,1244,1248,1265,1269,1273,1278,1308,1315,1320,1349,1354,1359,1368],{"__ignoreMap":106},[110,1022,1023,1025],{"class":112,"line":113},[110,1024,428],{"class":116},[110,1026,432],{"class":431},[110,1028,1029,1031],{"class":112,"line":138},[110,1030,428],{"class":116},[110,1032,1033],{"class":431}," \u003Cmemory>\n",[110,1035,1036],{"class":112,"line":156},[110,1037,185],{"emptyLinePlaceholder":184},[110,1039,1040,1043,1046,1049,1052],{"class":112,"line":181},[110,1041,1042],{"class":116},"template",[110,1044,1045],{"class":120}," \u003C",[110,1047,1048],{"class":116},"typename",[110,1050,1051],{"class":159}," T",[110,1053,1054],{"class":120},">\n",[110,1056,1057,1059,1062,1064,1067,1070,1073],{"class":112,"line":188},[110,1058,729],{"class":116},[110,1060,1061],{"class":159}," check_ptr",[110,1063,735],{"class":120},[110,1065,1066],{"class":159},"T",[110,1068,1069],{"class":116},"*",[110,1071,1072],{"class":740}," ptr",[110,1074,634],{"class":120},[110,1076,1077],{"class":112,"line":194},[110,1078,459],{"class":120},[110,1080,1081,1083,1086,1088,1090],{"class":112,"line":211},[110,1082,624],{"class":116},[110,1084,1085],{"class":120}," (ptr ",[110,1087,203],{"class":116},[110,1089,128],{"class":127},[110,1091,634],{"class":120},[110,1093,1094],{"class":112,"line":228},[110,1095,640],{"class":120},[110,1097,1098,1100,1102,1104,1107,1109,1111],{"class":112,"line":513},[110,1099,646],{"class":159},[110,1101,530],{"class":120},[110,1103,533],{"class":116},[110,1105,1106],{"class":431}," \"pointer is null",[110,1108,549],{"class":127},[110,1110,552],{"class":431},[110,1112,555],{"class":120},[110,1114,1115],{"class":112,"line":518},[110,1116,665],{"class":120},[110,1118,1119],{"class":112,"line":524},[110,1120,842],{"class":116},[110,1122,1123],{"class":112,"line":558},[110,1124,640],{"class":120},[110,1126,1127,1129,1131,1133,1136,1138,1140,1143,1145,1147,1149,1151],{"class":112,"line":584},[110,1128,646],{"class":159},[110,1130,530],{"class":120},[110,1132,533],{"class":116},[110,1134,1135],{"class":431}," \"pointer value = \"",[110,1137,539],{"class":116},[110,1139,862],{"class":116},[110,1141,1142],{"class":120},"ptr ",[110,1144,533],{"class":116},[110,1146,546],{"class":431},[110,1148,549],{"class":127},[110,1150,552],{"class":431},[110,1152,555],{"class":120},[110,1154,1155],{"class":112,"line":610},[110,1156,665],{"class":120},[110,1158,1159],{"class":112,"line":615},[110,1160,686],{"class":120},[110,1162,1163],{"class":112,"line":621},[110,1164,185],{"emptyLinePlaceholder":184},[110,1166,1167,1169,1171],{"class":112,"line":637},[110,1168,448],{"class":116},[110,1170,451],{"class":159},[110,1172,454],{"class":120},[110,1174,1175],{"class":112,"line":643},[110,1176,459],{"class":120},[110,1178,1179],{"class":112,"line":662},[110,1180,1181],{"class":134},"    // 原始指针初始化为空\n",[110,1183,1184,1186,1189,1191,1193],{"class":112,"line":668},[110,1185,464],{"class":116},[110,1187,1188],{"class":120}," rp ",[110,1190,124],{"class":116},[110,1192,128],{"class":127},[110,1194,555],{"class":120},[110,1196,1197,1200],{"class":112,"line":673},[110,1198,1199],{"class":159},"    check_ptr",[110,1201,1202],{"class":120},"(rp);\n",[110,1204,1205],{"class":112,"line":683},[110,1206,185],{"emptyLinePlaceholder":184},[110,1208,1209],{"class":112,"line":902},[110,1210,1211],{"class":134},"    // 智能指针初始化为空\n",[110,1213,1214,1216,1218,1220,1222,1224,1226],{"class":112,"line":919},[110,1215,527],{"class":159},[110,1217,163],{"class":120},[110,1219,166],{"class":116},[110,1221,169],{"class":120},[110,1223,124],{"class":116},[110,1225,128],{"class":127},[110,1227,555],{"class":120},[110,1229,1230],{"class":112,"line":933},[110,1231,1232],{"class":134},"    // 智能指针也可直接用 bool 判断\n",[110,1234,1235,1237,1239,1241],{"class":112,"line":938},[110,1236,624],{"class":116},[110,1238,216],{"class":120},[110,1240,219],{"class":116},[110,1242,1243],{"class":120},"sp)\n",[110,1245,1246],{"class":112,"line":947},[110,1247,640],{"class":120},[110,1249,1250,1252,1254,1256,1259,1261,1263],{"class":112,"line":956},[110,1251,646],{"class":159},[110,1253,530],{"class":120},[110,1255,533],{"class":116},[110,1257,1258],{"class":431}," \"shared_ptr is null",[110,1260,549],{"class":127},[110,1262,552],{"class":431},[110,1264,555],{"class":120},[110,1266,1267],{"class":112,"line":961},[110,1268,665],{"class":120},[110,1270,1271],{"class":112,"line":974},[110,1272,185],{"emptyLinePlaceholder":184},[110,1274,1275],{"class":112,"line":985},[110,1276,1277],{"class":134},"    // 创建后赋值\n",[110,1279,1280,1283,1285,1288,1291,1294,1297,1299,1302,1305],{"class":112,"line":990},[110,1281,1282],{"class":120},"    sp ",[110,1284,124],{"class":116},[110,1286,1287],{"class":159}," std",[110,1289,1290],{"class":120},"::",[110,1292,1293],{"class":159},"make_shared",[110,1295,1296],{"class":120},"\u003C",[110,1298,448],{"class":116},[110,1300,1301],{"class":120},">(",[110,1303,1304],{"class":127},"100",[110,1306,1307],{"class":120},");\n",[110,1309,1310,1312],{"class":112,"line":999},[110,1311,624],{"class":116},[110,1313,1314],{"class":120}," (sp)\n",[110,1316,1318],{"class":112,"line":1317},34,[110,1319,640],{"class":120},[110,1321,1323,1325,1327,1329,1332,1334,1336,1339,1341,1343,1345,1347],{"class":112,"line":1322},35,[110,1324,646],{"class":159},[110,1326,530],{"class":120},[110,1328,533],{"class":116},[110,1330,1331],{"class":431}," \"shared_ptr value = \"",[110,1333,539],{"class":116},[110,1335,862],{"class":116},[110,1337,1338],{"class":120},"sp ",[110,1340,533],{"class":116},[110,1342,546],{"class":431},[110,1344,549],{"class":127},[110,1346,552],{"class":431},[110,1348,555],{"class":120},[110,1350,1352],{"class":112,"line":1351},36,[110,1353,665],{"class":120},[110,1355,1357],{"class":112,"line":1356},37,[110,1358,185],{"emptyLinePlaceholder":184},[110,1360,1362,1364,1366],{"class":112,"line":1361},38,[110,1363,676],{"class":116},[110,1365,488],{"class":127},[110,1367,555],{"class":120},[110,1369,1371],{"class":112,"line":1370},39,[110,1372,686],{"class":120},[14,1374,1375,692],{},[43,1376,691],{},[101,1378,1381],{"className":1379,"code":1380,"language":698},[696],"pointer is null\nshared_ptr is null\nshared_ptr value = 100\n",[18,1382,1380],{"__ignoreMap":106},[415,1384,1386],{"id":1385},"示例-4nullptr-不是魔法多个指针重载仍需指定类型","示例 4：nullptr 不是魔法——多个指针重载仍需指定类型",[101,1388,1390],{"className":103,"code":1389,"language":105,"meta":106,"style":106},"#include \u003Ciostream>\n\nvoid reset(int* p)\n{\n    std::cout \u003C\u003C \"reset int pointer\\n\";\n    if (p != nullptr)\n    {\n        *p = 0;\n    }\n}\n\nvoid reset(double* p)\n{\n    std::cout \u003C\u003C \"reset double pointer\\n\";\n    if (p != nullptr)\n    {\n        *p = 0.0;\n    }\n}\n\nint main()\n{\n    int count = 42;\n    double ratio = 3.14;\n\n    reset(&count);   // 明确调用 int* 版本\n    reset(&ratio);   // 明确调用 double* 版本\n\n    int* count_ptr = nullptr;\n    reset(count_ptr); // 仍然明确是 int* 版本\n\n    // reset(nullptr); // ❌ 编译错误：nullptr 可以转成 int*，也可以转成 double*\n\n    std::cout \u003C\u003C \"count = \" \u003C\u003C count \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"ratio = \" \u003C\u003C ratio \u003C\u003C \"\\n\";\n\n    return 0;\n}\n",[18,1391,1392,1398,1402,1417,1421,1438,1451,1455,1468,1472,1476,1480,1494,1498,1515,1527,1531,1544,1548,1552,1556,1564,1568,1583,1598,1602,1618,1632,1636,1649,1659,1663,1671,1675,1700,1725,1729,1737],{"__ignoreMap":106},[110,1393,1394,1396],{"class":112,"line":113},[110,1395,428],{"class":116},[110,1397,432],{"class":431},[110,1399,1400],{"class":112,"line":138},[110,1401,185],{"emptyLinePlaceholder":184},[110,1403,1404,1406,1409,1411,1413,1415],{"class":112,"line":156},[110,1405,729],{"class":116},[110,1407,1408],{"class":159}," reset",[110,1410,735],{"class":120},[110,1412,117],{"class":116},[110,1414,794],{"class":740},[110,1416,634],{"class":120},[110,1418,1419],{"class":112,"line":181},[110,1420,459],{"class":120},[110,1422,1423,1425,1427,1429,1432,1434,1436],{"class":112,"line":188},[110,1424,527],{"class":159},[110,1426,530],{"class":120},[110,1428,533],{"class":116},[110,1430,1431],{"class":431}," \"reset int pointer",[110,1433,549],{"class":127},[110,1435,552],{"class":431},[110,1437,555],{"class":120},[110,1439,1440,1442,1444,1447,1449],{"class":112,"line":194},[110,1441,624],{"class":116},[110,1443,200],{"class":120},[110,1445,1446],{"class":116},"!=",[110,1448,128],{"class":127},[110,1450,634],{"class":120},[110,1452,1453],{"class":112,"line":211},[110,1454,640],{"class":120},[110,1456,1457,1460,1462,1464,1466],{"class":112,"line":228},[110,1458,1459],{"class":116},"        *",[110,1461,865],{"class":120},[110,1463,124],{"class":116},[110,1465,488],{"class":127},[110,1467,555],{"class":120},[110,1469,1470],{"class":112,"line":513},[110,1471,665],{"class":120},[110,1473,1474],{"class":112,"line":518},[110,1475,686],{"class":120},[110,1477,1478],{"class":112,"line":524},[110,1479,185],{"emptyLinePlaceholder":184},[110,1481,1482,1484,1486,1488,1490,1492],{"class":112,"line":558},[110,1483,729],{"class":116},[110,1485,1408],{"class":159},[110,1487,735],{"class":120},[110,1489,141],{"class":116},[110,1491,794],{"class":740},[110,1493,634],{"class":120},[110,1495,1496],{"class":112,"line":584},[110,1497,459],{"class":120},[110,1499,1500,1502,1504,1506,1509,1511,1513],{"class":112,"line":610},[110,1501,527],{"class":159},[110,1503,530],{"class":120},[110,1505,533],{"class":116},[110,1507,1508],{"class":431}," \"reset double pointer",[110,1510,549],{"class":127},[110,1512,552],{"class":431},[110,1514,555],{"class":120},[110,1516,1517,1519,1521,1523,1525],{"class":112,"line":615},[110,1518,624],{"class":116},[110,1520,200],{"class":120},[110,1522,1446],{"class":116},[110,1524,128],{"class":127},[110,1526,634],{"class":120},[110,1528,1529],{"class":112,"line":621},[110,1530,640],{"class":120},[110,1532,1533,1535,1537,1539,1542],{"class":112,"line":637},[110,1534,1459],{"class":116},[110,1536,865],{"class":120},[110,1538,124],{"class":116},[110,1540,1541],{"class":127}," 0.0",[110,1543,555],{"class":120},[110,1545,1546],{"class":112,"line":643},[110,1547,665],{"class":120},[110,1549,1550],{"class":112,"line":662},[110,1551,686],{"class":120},[110,1553,1554],{"class":112,"line":668},[110,1555,185],{"emptyLinePlaceholder":184},[110,1557,1558,1560,1562],{"class":112,"line":673},[110,1559,448],{"class":116},[110,1561,451],{"class":159},[110,1563,454],{"class":120},[110,1565,1566],{"class":112,"line":683},[110,1567,459],{"class":120},[110,1569,1570,1573,1576,1578,1581],{"class":112,"line":902},[110,1571,1572],{"class":116},"    int",[110,1574,1575],{"class":120}," count ",[110,1577,124],{"class":116},[110,1579,1580],{"class":127}," 42",[110,1582,555],{"class":120},[110,1584,1585,1588,1591,1593,1596],{"class":112,"line":919},[110,1586,1587],{"class":116},"    double",[110,1589,1590],{"class":120}," ratio ",[110,1592,124],{"class":116},[110,1594,1595],{"class":127}," 3.14",[110,1597,555],{"class":120},[110,1599,1600],{"class":112,"line":933},[110,1601,185],{"emptyLinePlaceholder":184},[110,1603,1604,1607,1609,1612,1615],{"class":112,"line":938},[110,1605,1606],{"class":159},"    reset",[110,1608,735],{"class":120},[110,1610,1611],{"class":116},"&",[110,1613,1614],{"class":120},"count);",[110,1616,1617],{"class":134},"   // 明确调用 int* 版本\n",[110,1619,1620,1622,1624,1626,1629],{"class":112,"line":947},[110,1621,1606],{"class":159},[110,1623,735],{"class":120},[110,1625,1611],{"class":116},[110,1627,1628],{"class":120},"ratio);",[110,1630,1631],{"class":134},"   // 明确调用 double* 版本\n",[110,1633,1634],{"class":112,"line":956},[110,1635,185],{"emptyLinePlaceholder":184},[110,1637,1638,1640,1643,1645,1647],{"class":112,"line":961},[110,1639,464],{"class":116},[110,1641,1642],{"class":120}," count_ptr ",[110,1644,124],{"class":116},[110,1646,128],{"class":127},[110,1648,555],{"class":120},[110,1650,1651,1653,1656],{"class":112,"line":974},[110,1652,1606],{"class":159},[110,1654,1655],{"class":120},"(count_ptr);",[110,1657,1658],{"class":134}," // 仍然明确是 int* 版本\n",[110,1660,1661],{"class":112,"line":985},[110,1662,185],{"emptyLinePlaceholder":184},[110,1664,1665,1668],{"class":112,"line":990},[110,1666,1667],{"class":134},"    // reset(nullptr);",[110,1669,1670],{"class":134}," // ❌ 编译错误：nullptr 可以转成 int*，也可以转成 double*\n",[110,1672,1673],{"class":112,"line":999},[110,1674,185],{"emptyLinePlaceholder":184},[110,1676,1677,1679,1681,1683,1686,1688,1690,1692,1694,1696,1698],{"class":112,"line":1317},[110,1678,527],{"class":159},[110,1680,530],{"class":120},[110,1682,533],{"class":116},[110,1684,1685],{"class":431}," \"count = \"",[110,1687,539],{"class":116},[110,1689,1575],{"class":120},[110,1691,533],{"class":116},[110,1693,546],{"class":431},[110,1695,549],{"class":127},[110,1697,552],{"class":431},[110,1699,555],{"class":120},[110,1701,1702,1704,1706,1708,1711,1713,1715,1717,1719,1721,1723],{"class":112,"line":1322},[110,1703,527],{"class":159},[110,1705,530],{"class":120},[110,1707,533],{"class":116},[110,1709,1710],{"class":431}," \"ratio = \"",[110,1712,539],{"class":116},[110,1714,1590],{"class":120},[110,1716,533],{"class":116},[110,1718,546],{"class":431},[110,1720,549],{"class":127},[110,1722,552],{"class":431},[110,1724,555],{"class":120},[110,1726,1727],{"class":112,"line":1351},[110,1728,185],{"emptyLinePlaceholder":184},[110,1730,1731,1733,1735],{"class":112,"line":1356},[110,1732,676],{"class":116},[110,1734,488],{"class":127},[110,1736,555],{"class":120},[110,1738,1739],{"class":112,"line":1361},[110,1740,686],{"class":120},[14,1742,1743,692],{},[43,1744,691],{},[101,1746,1749],{"className":1747,"code":1748,"language":698},[696],"reset int pointer\nreset double pointer\nreset int pointer\ncount = 0\nratio = 0\n",[18,1750,1748],{"__ignoreMap":106},[10,1752,691],{"id":691},[14,1754,1755],{},"见上方每个示例的\"运行结果\"。",[10,1757,1758],{"id":1758},"示例中的关键语法解释",[241,1760,1761,1780],{},[244,1762,1763],{},[247,1764,1765,1768,1771,1774,1777],{},[250,1766,1767],{"align":252},"示例",[250,1769,1770],{"align":252},"讲了什么",[250,1772,1773],{"align":252},"新出现的语法",[250,1775,1776],{"align":252},"为什么这样写",[250,1778,1779],{"align":252},"注意事项",[258,1781,1782,1805,1822,1847],{},[247,1783,1784,1787,1790,1797,1800],{},[263,1785,1786],{"align":252},"示例 1",[263,1788,1789],{"align":252},"nullptr 基本用法",[263,1791,1792,1794,1795],{"align":252},[18,1793,5],{},"、",[18,1796,277],{},[263,1798,1799],{"align":252},"初始化指针为\"空\"，类型安全",[263,1801,1802,1803],{"align":252},"nullptr 的类型是 ",[18,1804,68],{},[247,1806,1807,1810,1813,1816,1819],{},[263,1808,1809],{"align":252},"示例 2",[263,1811,1812],{"align":252},"解决重载歧义",[263,1814,1815],{"align":252},"重载函数中 nullptr 匹配指针版本",[263,1817,1818],{"align":252},"NULL 不能区分整数和指针重载，nullptr 可以",[263,1820,1821],{"align":252},"这就是 nullptr 替代 NULL 的核心原因",[247,1823,1824,1827,1830,1838,1841],{},[263,1825,1826],{"align":252},"示例 3",[263,1828,1829],{"align":252},"模板和智能指针",[263,1831,1832,1794,1835],{"align":252},[18,1833,1834],{},"shared_ptr = nullptr",[18,1836,1837],{},"if(sp)",[263,1839,1840],{"align":252},"智能指针也能用 nullptr 初始化",[263,1842,1843,1844],{"align":252},"智能指针的 bool 转换等价于 ",[18,1845,1846],{},"!= nullptr",[247,1848,1849,1852,1855,1863,1866],{},[263,1850,1851],{"align":252},"示例 4",[263,1853,1854],{"align":252},"多个指针重载",[263,1856,1857,1794,1859,1794,1861],{"align":252},[18,1858,117],{},[18,1860,141],{},[18,1862,5],{},[263,1864,1865],{"align":252},"nullptr 能排除整数重载，但不能替你选择具体指针类型",[263,1867,1868],{"align":252},"多个指针重载时先把 nullptr 放进明确类型的指针变量",[10,1870,1871],{"id":1871},"常见错误",[14,1873,1874],{},[43,1875,1876],{},"错误 1：以为 nullptr 可以匹配任意一个指针重载",[101,1878,1880],{"className":103,"code":1879,"language":105,"meta":106,"style":106},"void f(int*);\nvoid f(double*);\n\nf(nullptr);  // ❌ 编译错误：两个指针版本都能匹配\n",[18,1881,1882,1895,1907,1911],{"__ignoreMap":106},[110,1883,1884,1886,1889,1891,1893],{"class":112,"line":113},[110,1885,729],{"class":116},[110,1887,1888],{"class":159}," f",[110,1890,735],{"class":120},[110,1892,117],{"class":116},[110,1894,1307],{"class":120},[110,1896,1897,1899,1901,1903,1905],{"class":112,"line":138},[110,1898,729],{"class":116},[110,1900,1888],{"class":159},[110,1902,735],{"class":120},[110,1904,141],{"class":116},[110,1906,1307],{"class":120},[110,1908,1909],{"class":112,"line":156},[110,1910,185],{"emptyLinePlaceholder":184},[110,1912,1913,1916,1918,1920,1922],{"class":112,"line":181},[110,1914,1915],{"class":159},"f",[110,1917,735],{"class":120},[110,1919,5],{"class":127},[110,1921,913],{"class":120},[110,1923,1924],{"class":134},"  // ❌ 编译错误：两个指针版本都能匹配\n",[14,1926,1927,1928],{},"正确做法：先明确类型：",[18,1929,1930],{},"int* p = nullptr; f(p);",[14,1932,1933],{},[43,1934,1935,1936,1938],{},"错误 2：把 ",[18,1937,5],{}," 赋给整数",[101,1940,1942],{"className":103,"code":1941,"language":105,"meta":106,"style":106},"int n = nullptr;  // ❌ 编译错误！nullptr 不能隐式转换为整数\n",[18,1943,1944],{"__ignoreMap":106},[110,1945,1946,1948,1950,1952,1954,1956],{"class":112,"line":113},[110,1947,448],{"class":116},[110,1949,763],{"class":120},[110,1951,124],{"class":116},[110,1953,128],{"class":127},[110,1955,131],{"class":120},[110,1957,1958],{"class":134},"  // ❌ 编译错误！nullptr 不能隐式转换为整数\n",[14,1960,1961],{},"正确做法：整型用 0，指针用 nullptr。",[14,1963,1964],{},[43,1965,1966,1967,1969],{},"错误 3：用 ",[18,1968,20],{}," 做指针判断",[101,1971,1973],{"className":103,"code":1972,"language":105,"meta":106,"style":106},"if (p == NULL) { ... }  // 能工作，但不是最佳实践\n",[18,1974,1975],{"__ignoreMap":106},[110,1976,1977,1979,1981,1983,1985,1988],{"class":112,"line":113},[110,1978,197],{"class":116},[110,1980,200],{"class":120},[110,1982,203],{"class":116},[110,1984,505],{"class":127},[110,1986,1987],{"class":120},") { ... }",[110,1989,1990],{"class":134},"  // 能工作，但不是最佳实践\n",[14,1992,1993,1994,1997,1998,96],{},"正确做法：用 ",[18,1995,1996],{},"if (p == nullptr)"," 或直接 ",[18,1999,2000],{},"if (!p)",[14,2002,2003],{},[43,2004,2005],{},"错误 4：把 nullptr 当布尔值用在非预期的地方",[101,2007,2009],{"className":103,"code":2008,"language":105,"meta":106,"style":106},"std::string s = nullptr;  // ❌ C++23 起直接禁止；旧标准中也是未定义行为\n",[18,2010,2011],{"__ignoreMap":106},[110,2012,2013,2015,2018,2020,2022,2024],{"class":112,"line":113},[110,2014,160],{"class":159},[110,2016,2017],{"class":120},"::string s ",[110,2019,124],{"class":116},[110,2021,128],{"class":127},[110,2023,131],{"class":120},[110,2025,2026],{"class":134},"  // ❌ C++23 起直接禁止；旧标准中也是未定义行为\n",[14,2028,2029,2030,21,2032,96],{},"正确做法：空字符串用 ",[18,2031,376],{},[18,2033,2034],{},"std::string s = \"\";",[10,2036,2037],{"id":2037},"使用建议",[2039,2040,2041,2054,2064,2077],"ol",{},[30,2042,2043,2053],{},[43,2044,2045,2046,2048,2049,21,2051],{},"永远用 ",[18,2047,5],{}," 而不是 ",[18,2050,20],{},[18,2052,24],{},"：这是现代 C++ 的规则，避免类型歧义。",[30,2055,2056,2061,2062,96],{},[43,2057,2058,2059],{},"智能指针也可用 ",[18,2060,5],{},"：如 ",[18,2063,363],{},[30,2065,2066,2072,2073,2076],{},[43,2067,2068,2069,2071],{},"用 ",[18,2070,287],{}," 检查非空","：等价于 ",[18,2074,2075],{},"if (ptr != nullptr)","，更简洁。",[30,2078,2079,2082],{},[43,2080,2081],{},"不要给非指针类型赋 nullptr","：整数、字符串等不要用 nullptr 初始化。",[10,2084,2085],{"id":2085},"小结",[27,2087,2088,2098,2106,2115],{},[30,2089,2090,2092,2093,2095,2096,96],{},[18,2091,5],{}," 是类型安全的空指针常量，替代 ",[18,2094,20],{}," 和 ",[18,2097,24],{},[30,2099,2100,2102,2103,2105],{},[18,2101,5],{}," 的类型是 ",[18,2104,68],{},"，只能隐式转为指针类型。",[30,2107,2108,2109,2111,2112,2114],{},"在重载函数中，",[18,2110,5],{}," 可以正确匹配到指针版本，",[18,2113,20],{}," 不行。",[30,2116,2117,2118,96],{},"现代 C++ 中永远使用 ",[18,2119,5],{},[2121,2122,2123],"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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":106,"searchDepth":138,"depth":138,"links":2125},[2126,2127,2128,2129,2130,2131,2132,2133,2139,2140,2141,2142,2143],{"id":12,"depth":138,"text":12},{"id":60,"depth":138,"text":60},{"id":76,"depth":138,"text":77},{"id":83,"depth":138,"text":83},{"id":99,"depth":138,"text":99},{"id":239,"depth":138,"text":239},{"id":313,"depth":138,"text":314},{"id":413,"depth":138,"text":413,"children":2134},[2135,2136,2137,2138],{"id":417,"depth":156,"text":418},{"id":703,"depth":156,"text":704},{"id":1014,"depth":156,"text":1015},{"id":1385,"depth":156,"text":1386},{"id":691,"depth":138,"text":691},{"id":1758,"depth":138,"text":1758},{"id":1871,"depth":138,"text":1871},{"id":2037,"depth":138,"text":2037},{"id":2085,"depth":138,"text":2085},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr","18.2",18020000,"2023-10-05","wiki/2023-10-05-cplusplus-jiao-xue","zh-cn:2023-10-05-cplusplus-jiao-xue","/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki/2023-10-05-Cplusplus教学/ch18-2-nullptr",false,null,"/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr","zh-CN","zh-cn",{},{"title":5,"description":106},"hj_XKlefHrUcV2-2dmedLF7N7VFsblPKqSCeDZH8Pm4",[2163,2169,2175,2181,2187,2193,2199,2205,2211,2217,2223,2229,2235,2241,2247,2253,2259,2265,2271,2277,2283,2289,2295,2301,2307,2313,2319,2325,2331,2337,2343,2349,2355,2361,2367,2373,2379,2385,2391,2392,2398,2404,2410,2416,2422,2428,2434,2440,2446,2452,2458,2464,2470,2476,2482,2488,2494,2500,2506,2512,2518,2524,2530,2536,2542,2548,2554,2560,2566,2572],{"path":2164,"stem":2165,"title":2166,"date":2147,"chapter":2167,"chapterSort":2168,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch1-c-ji-chu-chu-shi","wiki/2023-10-05-Cplusplus教学/ch1-C++基础初识","C++基础初识","1",1000000,{"path":2170,"stem":2171,"title":2172,"date":2147,"chapter":2173,"chapterSort":2174,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch10-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki/2023-10-05-Cplusplus教学/ch10-内存分区与生命周期","内存分区与生命周期","10",10000000,{"path":2176,"stem":2177,"title":2178,"date":2147,"chapter":2179,"chapterSort":2180,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch11-yin-yong","wiki/2023-10-05-Cplusplus教学/ch11-引用","引用","11",11000000,{"path":2182,"stem":2183,"title":2184,"date":2147,"chapter":2185,"chapterSort":2186,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch12-han-shu-ti-gao-yu-ming-ming-kong-jian","wiki/2023-10-05-Cplusplus教学/ch12-函数提高与命名空间","函数提高与命名空间","12",12000000,{"path":2188,"stem":2189,"title":2190,"date":2147,"chapter":2191,"chapterSort":2192,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-1-feng-zhuang","wiki/2023-10-05-Cplusplus教学/ch13-1-封装","封装","13.1",13010000,{"path":2194,"stem":2195,"title":2196,"date":2147,"chapter":2197,"chapterSort":2198,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-2-dui-xiang-chu-shi-hua-he-qing-li","wiki/2023-10-05-Cplusplus教学/ch13-2-对象初始化和清理","对象初始化和清理","13.2",13020000,{"path":2200,"stem":2201,"title":2202,"date":2147,"chapter":2203,"chapterSort":2204,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-3-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch13-3-对象模型与this指针","对象模型与this指针","13.3",13030000,{"path":2206,"stem":2207,"title":2208,"date":2147,"chapter":2209,"chapterSort":2210,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-4-you-yuan-yu-yun-suan-fu-zhong-zai","wiki/2023-10-05-Cplusplus教学/ch13-4-友元与运算符重载","友元与运算符重载","13.4",13040000,{"path":2212,"stem":2213,"title":2214,"date":2147,"chapter":2215,"chapterSort":2216,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-5-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch13-5-继承","继承","13.5",13050000,{"path":2218,"stem":2219,"title":2220,"date":2147,"chapter":2221,"chapterSort":2222,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-6-duo-tai","wiki/2023-10-05-Cplusplus教学/ch13-6-多态","多态","13.6",13060000,{"path":2224,"stem":2225,"title":2226,"date":2147,"chapter":2227,"chapterSort":2228,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-lei-he-dui-xiang","wiki/2023-10-05-Cplusplus教学/ch13-类和对象","类和对象","13",13000000,{"path":2230,"stem":2231,"title":2232,"date":2147,"chapter":2233,"chapterSort":2234,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch14-wen-jian-cao-zuo","wiki/2023-10-05-Cplusplus教学/ch14-文件操作","文件操作","14",14000000,{"path":2236,"stem":2237,"title":2238,"date":2147,"chapter":2239,"chapterSort":2240,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban","wiki/2023-10-05-Cplusplus教学/ch15-模板","模板","15",15000000,{"path":2242,"stem":2243,"title":2244,"date":2147,"chapter":2245,"chapterSort":2246,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-1-stl-chu-shi","wiki/2023-10-05-Cplusplus教学/ch16-1-STL初识","STL初识","16.1",16010000,{"path":2248,"stem":2249,"title":2250,"date":2147,"chapter":2251,"chapterSort":2252,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-2-std-array","wiki/2023-10-05-Cplusplus教学/ch16-2-std-array","std::array","16.2",16020000,{"path":2254,"stem":2255,"title":2256,"date":2147,"chapter":2257,"chapterSort":2258,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-3-string-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-3-string容器","string容器","16.3",16030000,{"path":2260,"stem":2261,"title":2262,"date":2147,"chapter":2263,"chapterSort":2264,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-4-vector-yu-deque-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-4-vector与deque容器","vector与deque容器","16.4",16040000,{"path":2266,"stem":2267,"title":2268,"date":2147,"chapter":2269,"chapterSort":2270,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-5-stack-queue-list-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-5-stack-queue-list容器","stack / queue / list 容器","16.5",16050000,{"path":2272,"stem":2273,"title":2274,"date":2147,"chapter":2275,"chapterSort":2276,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-6-set-map-rong-qi","wiki/2023-10-05-Cplusplus教学/ch16-6-set-map容器","set / map 容器","16.6",16060000,{"path":2278,"stem":2279,"title":2280,"date":2147,"chapter":2281,"chapterSort":2282,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-7-han-shu-dui-xiang-yu-wei-ci","wiki/2023-10-05-Cplusplus教学/ch16-7-函数对象与谓词","函数对象与谓词","16.7",16070000,{"path":2284,"stem":2285,"title":2286,"date":2147,"chapter":2287,"chapterSort":2288,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-8-chang-yong-suan-fa","wiki/2023-10-05-Cplusplus教学/ch16-8-常用算法","常用算法","16.8",16080000,{"path":2290,"stem":2291,"title":2292,"date":2147,"chapter":2293,"chapterSort":2294,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch16-stl-ti-gao-bian-cheng","wiki/2023-10-05-Cplusplus教学/ch16-STL提高编程","STL提高编程","16",16000000,{"path":2296,"stem":2297,"title":2298,"date":2147,"chapter":2299,"chapterSort":2300,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan","wiki/2023-10-05-Cplusplus教学/ch17-C++类型转换","C++类型转换","17",17000000,{"path":2302,"stem":2303,"title":2304,"date":2147,"chapter":2305,"chapterSort":2306,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-1-auto","wiki/2023-10-05-Cplusplus教学/ch18-1-auto","auto","18.1",18010000,{"path":2308,"stem":2309,"title":2310,"date":2147,"chapter":2311,"chapterSort":2312,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-10-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki/2023-10-05-Cplusplus教学/ch18-10-右值引用和移动语义","右值引用和移动语义","18.10",18100000,{"path":2314,"stem":2315,"title":2316,"date":2147,"chapter":2317,"chapterSort":2318,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-11-lambda-biao-da-shi","wiki/2023-10-05-Cplusplus教学/ch18-11-Lambda表达式","Lambda 表达式","18.11",18110000,{"path":2320,"stem":2321,"title":2322,"date":2147,"chapter":2323,"chapterSort":2324,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-12-std-function","wiki/2023-10-05-Cplusplus教学/ch18-12-std-function","std::function","18.12",18120000,{"path":2326,"stem":2327,"title":2328,"date":2147,"chapter":2329,"chapterSort":2330,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-13-std-bind","wiki/2023-10-05-Cplusplus教学/ch18-13-std-bind","std::bind","18.13",18130000,{"path":2332,"stem":2333,"title":2334,"date":2147,"chapter":2335,"chapterSort":2336,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-14-std-optional","wiki/2023-10-05-Cplusplus教学/ch18-14-std-optional","std::optional","18.14",18140000,{"path":2338,"stem":2339,"title":2340,"date":2147,"chapter":2341,"chapterSort":2342,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-15-std-variant","wiki/2023-10-05-Cplusplus教学/ch18-15-std-variant","std::variant","18.15",18150000,{"path":2344,"stem":2345,"title":2346,"date":2147,"chapter":2347,"chapterSort":2348,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-16-std-span","wiki/2023-10-05-Cplusplus教学/ch18-16-std-span","std::span","18.16",18160000,{"path":2350,"stem":2351,"title":2352,"date":2147,"chapter":2353,"chapterSort":2354,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-17-std-format-print","wiki/2023-10-05-Cplusplus教学/ch18-17-std-format-print","std::format / std::print","18.17",18170000,{"path":2356,"stem":2357,"title":2358,"date":2147,"chapter":2359,"chapterSort":2360,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-18-std-chrono","wiki/2023-10-05-Cplusplus教学/ch18-18-std-chrono","std::chrono","18.18",18180000,{"path":2362,"stem":2363,"title":2364,"date":2147,"chapter":2365,"chapterSort":2366,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-1-std-thread","wiki/2023-10-05-Cplusplus教学/ch18-19-1-std-thread","std::thread 与 join","18.19.1",18190100,{"path":2368,"stem":2369,"title":2370,"date":2147,"chapter":2371,"chapterSort":2372,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-2-mutex-lock-guard","wiki/2023-10-05-Cplusplus教学/ch18-19-2-mutex-lock-guard","mutex 与 lock_guard","18.19.2",18190200,{"path":2374,"stem":2375,"title":2376,"date":2147,"chapter":2377,"chapterSort":2378,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-3-std-atomic","wiki/2023-10-05-Cplusplus教学/ch18-19-3-std-atomic","std::atomic","18.19.3",18190300,{"path":2380,"stem":2381,"title":2382,"date":2147,"chapter":2383,"chapterSort":2384,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-4-condition-variable","wiki/2023-10-05-Cplusplus教学/ch18-19-4-condition-variable","condition_variable","18.19.4",18190400,{"path":2386,"stem":2387,"title":2388,"date":2147,"chapter":2389,"chapterSort":2390,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-19-bing-fa-bian-cheng","wiki/2023-10-05-Cplusplus教学/ch18-19-并发编程","并发编程","18.19",18190000,{"path":2144,"stem":2153,"title":5,"date":2147,"chapter":2145,"chapterSort":2146,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},{"path":2393,"stem":2394,"title":2395,"date":2147,"chapter":2396,"chapterSort":2397,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-20-std-filesystem","wiki/2023-10-05-Cplusplus教学/ch18-20-std-filesystem","std::filesystem","18.20",18200000,{"path":2399,"stem":2400,"title":2401,"date":2147,"chapter":2402,"chapterSort":2403,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-21-modules-jian-jie","wiki/2023-10-05-Cplusplus教学/ch18-21-modules简介","modules 简介","18.21",18210000,{"path":2405,"stem":2406,"title":2407,"date":2147,"chapter":2408,"chapterSort":2409,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-3-using","wiki/2023-10-05-Cplusplus教学/ch18-3-using","using","18.3",18030000,{"path":2411,"stem":2412,"title":2413,"date":2147,"chapter":2414,"chapterSort":2415,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-4-enum-class","wiki/2023-10-05-Cplusplus教学/ch18-4-enum-class","enum class","18.4",18040000,{"path":2417,"stem":2418,"title":2419,"date":2147,"chapter":2420,"chapterSort":2421,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-5-fan-wei-for-xun-huan","wiki/2023-10-05-Cplusplus教学/ch18-5-范围for循环","范围 for 循环","18.5",18050000,{"path":2423,"stem":2424,"title":2425,"date":2147,"chapter":2426,"chapterSort":2427,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-6-jie-gou-hua-bang-ding","wiki/2023-10-05-Cplusplus教学/ch18-6-结构化绑定","结构化绑定","18.6",18060000,{"path":2429,"stem":2430,"title":2431,"date":2147,"chapter":2432,"chapterSort":2433,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-7-constexpr","wiki/2023-10-05-Cplusplus教学/ch18-7-constexpr","constexpr","18.7",18070000,{"path":2435,"stem":2436,"title":2437,"date":2147,"chapter":2438,"chapterSort":2439,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-8-raii","wiki/2023-10-05-Cplusplus教学/ch18-8-RAII","RAII","18.8",18080000,{"path":2441,"stem":2442,"title":2443,"date":2147,"chapter":2444,"chapterSort":2445,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-9-zhi-neng-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch18-9-智能指针","智能指针","18.9",18090000,{"path":2447,"stem":2448,"title":2449,"date":2147,"chapter":2450,"chapterSort":2451,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","wiki/2023-10-05-Cplusplus教学/ch18-现代C++","现代C++","18",18000000,{"path":2453,"stem":2454,"title":2455,"date":2147,"chapter":2456,"chapterSort":2457,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-1-ding-shi-qi-yu-yi-bu-io","wiki/2023-10-05-Cplusplus教学/ch19-1-1-定时器与异步IO","定时器与异步 IO","19.1.1",19010100,{"path":2459,"stem":2460,"title":2461,"date":2147,"chapter":2462,"chapterSort":2463,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-2-boost-asio-ji-chu","wiki/2023-10-05-Cplusplus教学/ch19-1-2-Boost.Asio基础","Boost.Asio 基础","19.1.2",19010200,{"path":2465,"stem":2466,"title":2467,"date":2147,"chapter":2468,"chapterSort":2469,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-3-chuan-kou-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-3-串口通信","串口通信","19.1.3",19010300,{"path":2471,"stem":2472,"title":2473,"date":2147,"chapter":2474,"chapterSort":2475,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-4-tcp-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-4-TCP通信","TCP 通信","19.1.4",19010400,{"path":2477,"stem":2478,"title":2479,"date":2147,"chapter":2480,"chapterSort":2481,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-5-udp-tong-xin","wiki/2023-10-05-Cplusplus教学/ch19-1-5-UDP通信","UDP 通信","19.1.5",19010500,{"path":2483,"stem":2484,"title":2485,"date":2147,"chapter":2486,"chapterSort":2487,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-6-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch19-1-6-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成","19.1.6",19010600,{"path":2489,"stem":2490,"title":2491,"date":2147,"chapter":2492,"chapterSort":2493,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-1-boost-asio-yi-bu-io-ku","wiki/2023-10-05-Cplusplus教学/ch19-1-Boost.Asio异步IO库","Boost.Asio异步IO库","19.1",19010000,{"path":2495,"stem":2496,"title":2497,"date":2147,"chapter":2498,"chapterSort":2499,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-2-eigen-xian-xing-dai-shu-ku","wiki/2023-10-05-Cplusplus教学/ch19-2-Eigen线性代数库","Eigen线性代数库","19.2",19020000,{"path":2501,"stem":2502,"title":2503,"date":2147,"chapter":2504,"chapterSort":2505,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-3-opencv-ji-suan-ji-shi-jue-ku","wiki/2023-10-05-Cplusplus教学/ch19-3-OpenCV计算机视觉库","OpenCV计算机视觉库","19.3",19030000,{"path":2507,"stem":2508,"title":2509,"date":2147,"chapter":2510,"chapterSort":2511,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-4-pcl-dian-yun-ku","wiki/2023-10-05-Cplusplus教学/ch19-4-PCL点云库","PCL点云库","19.4",19040000,{"path":2513,"stem":2514,"title":2515,"date":2147,"chapter":2516,"chapterSort":2517,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-5-sophus-li-qun-li-dai-shu-ku","wiki/2023-10-05-Cplusplus教学/ch19-5-Sophus李群李代数库","Sophus 李群李代数库","19.5",19050000,{"path":2519,"stem":2520,"title":2521,"date":2147,"chapter":2522,"chapterSort":2523,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-chang-yong-ku","wiki/2023-10-05-Cplusplus教学/ch19-常用库","常用库学习","19",19000000,{"path":2525,"stem":2526,"title":2527,"date":2147,"chapter":2528,"chapterSort":2529,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch2-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki/2023-10-05-Cplusplus教学/ch2-数据类型与数据存放","数据类型与数据存放","2",2000000,{"path":2531,"stem":2532,"title":2533,"date":2147,"chapter":2534,"chapterSort":2535,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch3-shu-ru-shu-chu","wiki/2023-10-05-Cplusplus教学/ch3-输入输出","输入输出","3",3000000,{"path":2537,"stem":2538,"title":2539,"date":2147,"chapter":2540,"chapterSort":2541,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch4-yun-suan-fu","wiki/2023-10-05-Cplusplus教学/ch4-运算符","运算符","4",4000000,{"path":2543,"stem":2544,"title":2545,"date":2147,"chapter":2546,"chapterSort":2547,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch5-cheng-xu-liu-cheng-jie-gou","wiki/2023-10-05-Cplusplus教学/ch5-程序流程结构","程序流程结构","5",5000000,{"path":2549,"stem":2550,"title":2551,"date":2147,"chapter":2552,"chapterSort":2553,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch6-shu-zu","wiki/2023-10-05-Cplusplus教学/ch6-数组","数组","6",6000000,{"path":2555,"stem":2556,"title":2557,"date":2147,"chapter":2558,"chapterSort":2559,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch7-han-shu-yu-tou-wen-jian","wiki/2023-10-05-Cplusplus教学/ch7-函数与头文件","函数与头文件","7",7000000,{"path":2561,"stem":2562,"title":2563,"date":2147,"chapter":2564,"chapterSort":2565,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch8-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch8-指针","指针","8",8000000,{"path":2567,"stem":2568,"title":2569,"date":2147,"chapter":2570,"chapterSort":2571,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":2154},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch9-jie-gou-ti-yu-gong-yong-ti","wiki/2023-10-05-Cplusplus教学/ch9-结构体与共用体","结构体与共用体","9",9000000,{"path":2150,"stem":2573,"title":2574,"date":2147,"chapter":2155,"chapterSort":2575,"docKey":2149,"docRoot":2150,"docTitle":2151,"isWikiDoc":184,"isWikiIndex":184},"wiki/2023-10-05-Cplusplus教学/index","C/C++教程",0,{"variants":2577},[2578,2581,2584,2587,2590],{"path":2579,"localeSlug":2580,"i18nKey":2153},"/en-us/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr","en-us",{"path":2582,"localeSlug":2583,"i18nKey":2153},"/zh-hant/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr","zh-hant",{"path":2585,"localeSlug":2586,"i18nKey":2153},"/zh-hk/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr","zh-hk",{"path":2588,"localeSlug":2589,"i18nKey":2153},"/zh-tw/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr","zh-tw",{"path":2144,"localeSlug":2158,"i18nKey":2153},[2579,2156,2582,2156,2585,2156,2588,2156,2144,2156],1780663034389]