[{"data":1,"prerenderedAt":2592},["ShallowReactive",2],{"wiki-page-\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr":3,"wiki-doc-items-\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr":2170,"language-switcher-data-\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr":2576,"wiki-i18n-paths-\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr":2591},{"id":4,"title":5,"body":6,"canonicalPath":2153,"chapterDepth":113,"chapterOrder":2154,"date":2155,"description":106,"docI18nKey":2156,"docKey":2157,"docRoot":2158,"docTitle":2159,"extension":2160,"i18nKey":2161,"isBlogPost":2162,"isWikiDoc":184,"isWikiIndex":2162,"layout":2163,"legacyPath":2164,"locale":2165,"localeSlug":2166,"meta":2167,"navigation":184,"path":2153,"seo":2168,"sourcePath":2164,"sourceStem":2161,"stem":2161,"wikiDepth":113,"__hash__":2169},"content\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr.md","nullptr",{"type":7,"value":8,"toc":2133},"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,1012,1016,1022,1026,1382,1386,1392,1396,1750,1754,1760,1762,1765,1768,1878,1881,1886,1934,1940,1948,1968,1971,1979,2000,2010,2015,2036,2044,2047,2092,2095,2129],[10,11,12],"h2",{"id":12},"本节解决什么问题",[14,15,16,17,21,22,25],"p",{},"在传统 C\u002FC++ 中，用 ",[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;           \u002F\u002F 空 int 指针\ndouble* d = nullptr;        \u002F\u002F 空 double 指针\nstd::shared_ptr\u003Cint> sp = nullptr;  \u002F\u002F 空智能指针\n\n\u002F\u002F 判断空指针\nif (p == nullptr) { ... }\nif (!p) { ... }             \u002F\u002F 等价写法\nif (p) { ... }              \u002F\u002F 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","           \u002F\u002F 空 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},"        \u002F\u002F 空 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},"  \u002F\u002F 空智能指针\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},"\u002F\u002F 判断空指针\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},"             \u002F\u002F 等价写法\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},"              \u002F\u002F 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\u002Fdelete",[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;    \u002F\u002F 空指针初始化\n    int* p2 = 0;           \u002F\u002F 旧写法（用 0 赋给指针）\n    int* p3 = NULL;        \u002F\u002F 旧写法（NULL 实际上还是 0）\n\n    \u002F\u002F 三种写法在简单的场景下等价\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    \u002F\u002F 判断空指针\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},"    \u002F\u002F 空指针初始化\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},"           \u002F\u002F 旧写法（用 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},"        \u002F\u002F 旧写法（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},"    \u002F\u002F 三种写法在简单的场景下等价\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},"    \u002F\u002F 判断空指针\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\u002F\u002F 两个重载函数\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);        \u002F\u002F 调用 process(int)\n    process(nullptr);   \u002F\u002F 调用 process(int*)，明确是指针版本\n\n\n    process(0);      \u002F\u002F 调用 process(int)\n    \u002F\u002F process(NULL);   \u002F\u002F ❌ 有歧义！编译器不知道调哪个\n\n    int* p = nullptr;\n    process(p);         \u002F\u002F 调用 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,941,955,964,969,982,993,998,1007],{"__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},"\u002F\u002F 两个重载函数\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},"        \u002F\u002F 调用 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},"   \u002F\u002F 调用 process(int*)，明确是指针版本\n",[110,932,934],{"class":112,"line":933},25,[110,935,185],{"emptyLinePlaceholder":184},[110,937,939],{"class":112,"line":938},26,[110,940,185],{"emptyLinePlaceholder":184},[110,942,944,946,948,950,952],{"class":112,"line":943},27,[110,945,905],{"class":159},[110,947,735],{"class":120},[110,949,24],{"class":127},[110,951,913],{"class":120},[110,953,954],{"class":134},"      \u002F\u002F 调用 process(int)\n",[110,956,958,961],{"class":112,"line":957},28,[110,959,960],{"class":134},"    \u002F\u002F process(NULL);",[110,962,963],{"class":134},"   \u002F\u002F ❌ 有歧义！编译器不知道调哪个\n",[110,965,967],{"class":112,"line":966},29,[110,968,185],{"emptyLinePlaceholder":184},[110,970,972,974,976,978,980],{"class":112,"line":971},30,[110,973,464],{"class":116},[110,975,121],{"class":120},[110,977,124],{"class":116},[110,979,128],{"class":127},[110,981,555],{"class":120},[110,983,985,987,990],{"class":112,"line":984},31,[110,986,905],{"class":159},[110,988,989],{"class":120},"(p);",[110,991,992],{"class":134},"         \u002F\u002F 调用 process(int*)\n",[110,994,996],{"class":112,"line":995},32,[110,997,185],{"emptyLinePlaceholder":184},[110,999,1001,1003,1005],{"class":112,"line":1000},33,[110,1002,676],{"class":116},[110,1004,488],{"class":127},[110,1006,555],{"class":120},[110,1008,1010],{"class":112,"line":1009},34,[110,1011,686],{"class":120},[14,1013,1014,692],{},[43,1015,691],{},[101,1017,1020],{"className":1018,"code":1019,"language":698},[696],"process(int): 42\nprocess(int*): nullptr\nprocess(int): 0\nprocess(int*): nullptr\n",[18,1021,1019],{"__ignoreMap":106},[415,1023,1025],{"id":1024},"示例-3在示例-2-基础上nullptr-在模板和智能指针中的应用","示例 3：在示例 2 基础上，nullptr 在模板和智能指针中的应用",[101,1027,1029],{"className":103,"code":1028,"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    \u002F\u002F 原始指针初始化为空\n    int* rp = nullptr;\n    check_ptr(rp);\n\n    \u002F\u002F 智能指针初始化为空\n    std::shared_ptr\u003Cint> sp = nullptr;\n    \u002F\u002F 智能指针也可直接用 bool 判断\n    if (!sp)\n    {\n        std::cout \u003C\u003C \"shared_ptr is null\\n\";\n    }\n\n    \u002F\u002F 创建后赋值\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,1030,1031,1037,1044,1048,1065,1085,1089,1102,1106,1123,1127,1131,1135,1163,1167,1171,1175,1183,1187,1192,1205,1213,1217,1222,1238,1243,1254,1258,1275,1279,1283,1288,1318,1325,1329,1358,1363,1368,1377],{"__ignoreMap":106},[110,1032,1033,1035],{"class":112,"line":113},[110,1034,428],{"class":116},[110,1036,432],{"class":431},[110,1038,1039,1041],{"class":112,"line":138},[110,1040,428],{"class":116},[110,1042,1043],{"class":431}," \u003Cmemory>\n",[110,1045,1046],{"class":112,"line":156},[110,1047,185],{"emptyLinePlaceholder":184},[110,1049,1050,1053,1056,1059,1062],{"class":112,"line":181},[110,1051,1052],{"class":116},"template",[110,1054,1055],{"class":120}," \u003C",[110,1057,1058],{"class":116},"typename",[110,1060,1061],{"class":159}," T",[110,1063,1064],{"class":120},">\n",[110,1066,1067,1069,1072,1074,1077,1080,1083],{"class":112,"line":188},[110,1068,729],{"class":116},[110,1070,1071],{"class":159}," check_ptr",[110,1073,735],{"class":120},[110,1075,1076],{"class":159},"T",[110,1078,1079],{"class":116},"*",[110,1081,1082],{"class":740}," ptr",[110,1084,634],{"class":120},[110,1086,1087],{"class":112,"line":194},[110,1088,459],{"class":120},[110,1090,1091,1093,1096,1098,1100],{"class":112,"line":211},[110,1092,624],{"class":116},[110,1094,1095],{"class":120}," (ptr ",[110,1097,203],{"class":116},[110,1099,128],{"class":127},[110,1101,634],{"class":120},[110,1103,1104],{"class":112,"line":228},[110,1105,640],{"class":120},[110,1107,1108,1110,1112,1114,1117,1119,1121],{"class":112,"line":513},[110,1109,646],{"class":159},[110,1111,530],{"class":120},[110,1113,533],{"class":116},[110,1115,1116],{"class":431}," \"pointer is null",[110,1118,549],{"class":127},[110,1120,552],{"class":431},[110,1122,555],{"class":120},[110,1124,1125],{"class":112,"line":518},[110,1126,665],{"class":120},[110,1128,1129],{"class":112,"line":524},[110,1130,842],{"class":116},[110,1132,1133],{"class":112,"line":558},[110,1134,640],{"class":120},[110,1136,1137,1139,1141,1143,1146,1148,1150,1153,1155,1157,1159,1161],{"class":112,"line":584},[110,1138,646],{"class":159},[110,1140,530],{"class":120},[110,1142,533],{"class":116},[110,1144,1145],{"class":431}," \"pointer value = \"",[110,1147,539],{"class":116},[110,1149,862],{"class":116},[110,1151,1152],{"class":120},"ptr ",[110,1154,533],{"class":116},[110,1156,546],{"class":431},[110,1158,549],{"class":127},[110,1160,552],{"class":431},[110,1162,555],{"class":120},[110,1164,1165],{"class":112,"line":610},[110,1166,665],{"class":120},[110,1168,1169],{"class":112,"line":615},[110,1170,686],{"class":120},[110,1172,1173],{"class":112,"line":621},[110,1174,185],{"emptyLinePlaceholder":184},[110,1176,1177,1179,1181],{"class":112,"line":637},[110,1178,448],{"class":116},[110,1180,451],{"class":159},[110,1182,454],{"class":120},[110,1184,1185],{"class":112,"line":643},[110,1186,459],{"class":120},[110,1188,1189],{"class":112,"line":662},[110,1190,1191],{"class":134},"    \u002F\u002F 原始指针初始化为空\n",[110,1193,1194,1196,1199,1201,1203],{"class":112,"line":668},[110,1195,464],{"class":116},[110,1197,1198],{"class":120}," rp ",[110,1200,124],{"class":116},[110,1202,128],{"class":127},[110,1204,555],{"class":120},[110,1206,1207,1210],{"class":112,"line":673},[110,1208,1209],{"class":159},"    check_ptr",[110,1211,1212],{"class":120},"(rp);\n",[110,1214,1215],{"class":112,"line":683},[110,1216,185],{"emptyLinePlaceholder":184},[110,1218,1219],{"class":112,"line":902},[110,1220,1221],{"class":134},"    \u002F\u002F 智能指针初始化为空\n",[110,1223,1224,1226,1228,1230,1232,1234,1236],{"class":112,"line":919},[110,1225,527],{"class":159},[110,1227,163],{"class":120},[110,1229,166],{"class":116},[110,1231,169],{"class":120},[110,1233,124],{"class":116},[110,1235,128],{"class":127},[110,1237,555],{"class":120},[110,1239,1240],{"class":112,"line":933},[110,1241,1242],{"class":134},"    \u002F\u002F 智能指针也可直接用 bool 判断\n",[110,1244,1245,1247,1249,1251],{"class":112,"line":938},[110,1246,624],{"class":116},[110,1248,216],{"class":120},[110,1250,219],{"class":116},[110,1252,1253],{"class":120},"sp)\n",[110,1255,1256],{"class":112,"line":943},[110,1257,640],{"class":120},[110,1259,1260,1262,1264,1266,1269,1271,1273],{"class":112,"line":957},[110,1261,646],{"class":159},[110,1263,530],{"class":120},[110,1265,533],{"class":116},[110,1267,1268],{"class":431}," \"shared_ptr is null",[110,1270,549],{"class":127},[110,1272,552],{"class":431},[110,1274,555],{"class":120},[110,1276,1277],{"class":112,"line":966},[110,1278,665],{"class":120},[110,1280,1281],{"class":112,"line":971},[110,1282,185],{"emptyLinePlaceholder":184},[110,1284,1285],{"class":112,"line":984},[110,1286,1287],{"class":134},"    \u002F\u002F 创建后赋值\n",[110,1289,1290,1293,1295,1298,1301,1304,1307,1309,1312,1315],{"class":112,"line":995},[110,1291,1292],{"class":120},"    sp ",[110,1294,124],{"class":116},[110,1296,1297],{"class":159}," std",[110,1299,1300],{"class":120},"::",[110,1302,1303],{"class":159},"make_shared",[110,1305,1306],{"class":120},"\u003C",[110,1308,448],{"class":116},[110,1310,1311],{"class":120},">(",[110,1313,1314],{"class":127},"100",[110,1316,1317],{"class":120},");\n",[110,1319,1320,1322],{"class":112,"line":1000},[110,1321,624],{"class":116},[110,1323,1324],{"class":120}," (sp)\n",[110,1326,1327],{"class":112,"line":1009},[110,1328,640],{"class":120},[110,1330,1332,1334,1336,1338,1341,1343,1345,1348,1350,1352,1354,1356],{"class":112,"line":1331},35,[110,1333,646],{"class":159},[110,1335,530],{"class":120},[110,1337,533],{"class":116},[110,1339,1340],{"class":431}," \"shared_ptr value = \"",[110,1342,539],{"class":116},[110,1344,862],{"class":116},[110,1346,1347],{"class":120},"sp ",[110,1349,533],{"class":116},[110,1351,546],{"class":431},[110,1353,549],{"class":127},[110,1355,552],{"class":431},[110,1357,555],{"class":120},[110,1359,1361],{"class":112,"line":1360},36,[110,1362,665],{"class":120},[110,1364,1366],{"class":112,"line":1365},37,[110,1367,185],{"emptyLinePlaceholder":184},[110,1369,1371,1373,1375],{"class":112,"line":1370},38,[110,1372,676],{"class":116},[110,1374,488],{"class":127},[110,1376,555],{"class":120},[110,1378,1380],{"class":112,"line":1379},39,[110,1381,686],{"class":120},[14,1383,1384,692],{},[43,1385,691],{},[101,1387,1390],{"className":1388,"code":1389,"language":698},[696],"pointer is null\nshared_ptr is null\nshared_ptr value = 100\n",[18,1391,1389],{"__ignoreMap":106},[415,1393,1395],{"id":1394},"示例-4nullptr-不是魔法多个指针重载仍需指定类型","示例 4：nullptr 不是魔法——多个指针重载仍需指定类型",[101,1397,1399],{"className":103,"code":1398,"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);   \u002F\u002F 明确调用 int* 版本\n    reset(&ratio);   \u002F\u002F 明确调用 double* 版本\n\n    int* count_ptr = nullptr;\n    reset(count_ptr); \u002F\u002F 仍然明确是 int* 版本\n\n    \u002F\u002F reset(nullptr); \u002F\u002F ❌ 编译错误：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,1400,1401,1407,1411,1426,1430,1447,1460,1464,1477,1481,1485,1489,1503,1507,1524,1536,1540,1553,1557,1561,1565,1573,1577,1592,1607,1611,1627,1641,1645,1658,1668,1672,1680,1684,1709,1734,1738,1746],{"__ignoreMap":106},[110,1402,1403,1405],{"class":112,"line":113},[110,1404,428],{"class":116},[110,1406,432],{"class":431},[110,1408,1409],{"class":112,"line":138},[110,1410,185],{"emptyLinePlaceholder":184},[110,1412,1413,1415,1418,1420,1422,1424],{"class":112,"line":156},[110,1414,729],{"class":116},[110,1416,1417],{"class":159}," reset",[110,1419,735],{"class":120},[110,1421,117],{"class":116},[110,1423,794],{"class":740},[110,1425,634],{"class":120},[110,1427,1428],{"class":112,"line":181},[110,1429,459],{"class":120},[110,1431,1432,1434,1436,1438,1441,1443,1445],{"class":112,"line":188},[110,1433,527],{"class":159},[110,1435,530],{"class":120},[110,1437,533],{"class":116},[110,1439,1440],{"class":431}," \"reset int pointer",[110,1442,549],{"class":127},[110,1444,552],{"class":431},[110,1446,555],{"class":120},[110,1448,1449,1451,1453,1456,1458],{"class":112,"line":194},[110,1450,624],{"class":116},[110,1452,200],{"class":120},[110,1454,1455],{"class":116},"!=",[110,1457,128],{"class":127},[110,1459,634],{"class":120},[110,1461,1462],{"class":112,"line":211},[110,1463,640],{"class":120},[110,1465,1466,1469,1471,1473,1475],{"class":112,"line":228},[110,1467,1468],{"class":116},"        *",[110,1470,865],{"class":120},[110,1472,124],{"class":116},[110,1474,488],{"class":127},[110,1476,555],{"class":120},[110,1478,1479],{"class":112,"line":513},[110,1480,665],{"class":120},[110,1482,1483],{"class":112,"line":518},[110,1484,686],{"class":120},[110,1486,1487],{"class":112,"line":524},[110,1488,185],{"emptyLinePlaceholder":184},[110,1490,1491,1493,1495,1497,1499,1501],{"class":112,"line":558},[110,1492,729],{"class":116},[110,1494,1417],{"class":159},[110,1496,735],{"class":120},[110,1498,141],{"class":116},[110,1500,794],{"class":740},[110,1502,634],{"class":120},[110,1504,1505],{"class":112,"line":584},[110,1506,459],{"class":120},[110,1508,1509,1511,1513,1515,1518,1520,1522],{"class":112,"line":610},[110,1510,527],{"class":159},[110,1512,530],{"class":120},[110,1514,533],{"class":116},[110,1516,1517],{"class":431}," \"reset double pointer",[110,1519,549],{"class":127},[110,1521,552],{"class":431},[110,1523,555],{"class":120},[110,1525,1526,1528,1530,1532,1534],{"class":112,"line":615},[110,1527,624],{"class":116},[110,1529,200],{"class":120},[110,1531,1455],{"class":116},[110,1533,128],{"class":127},[110,1535,634],{"class":120},[110,1537,1538],{"class":112,"line":621},[110,1539,640],{"class":120},[110,1541,1542,1544,1546,1548,1551],{"class":112,"line":637},[110,1543,1468],{"class":116},[110,1545,865],{"class":120},[110,1547,124],{"class":116},[110,1549,1550],{"class":127}," 0.0",[110,1552,555],{"class":120},[110,1554,1555],{"class":112,"line":643},[110,1556,665],{"class":120},[110,1558,1559],{"class":112,"line":662},[110,1560,686],{"class":120},[110,1562,1563],{"class":112,"line":668},[110,1564,185],{"emptyLinePlaceholder":184},[110,1566,1567,1569,1571],{"class":112,"line":673},[110,1568,448],{"class":116},[110,1570,451],{"class":159},[110,1572,454],{"class":120},[110,1574,1575],{"class":112,"line":683},[110,1576,459],{"class":120},[110,1578,1579,1582,1585,1587,1590],{"class":112,"line":902},[110,1580,1581],{"class":116},"    int",[110,1583,1584],{"class":120}," count ",[110,1586,124],{"class":116},[110,1588,1589],{"class":127}," 42",[110,1591,555],{"class":120},[110,1593,1594,1597,1600,1602,1605],{"class":112,"line":919},[110,1595,1596],{"class":116},"    double",[110,1598,1599],{"class":120}," ratio ",[110,1601,124],{"class":116},[110,1603,1604],{"class":127}," 3.14",[110,1606,555],{"class":120},[110,1608,1609],{"class":112,"line":933},[110,1610,185],{"emptyLinePlaceholder":184},[110,1612,1613,1616,1618,1621,1624],{"class":112,"line":938},[110,1614,1615],{"class":159},"    reset",[110,1617,735],{"class":120},[110,1619,1620],{"class":116},"&",[110,1622,1623],{"class":120},"count);",[110,1625,1626],{"class":134},"   \u002F\u002F 明确调用 int* 版本\n",[110,1628,1629,1631,1633,1635,1638],{"class":112,"line":943},[110,1630,1615],{"class":159},[110,1632,735],{"class":120},[110,1634,1620],{"class":116},[110,1636,1637],{"class":120},"ratio);",[110,1639,1640],{"class":134},"   \u002F\u002F 明确调用 double* 版本\n",[110,1642,1643],{"class":112,"line":957},[110,1644,185],{"emptyLinePlaceholder":184},[110,1646,1647,1649,1652,1654,1656],{"class":112,"line":966},[110,1648,464],{"class":116},[110,1650,1651],{"class":120}," count_ptr ",[110,1653,124],{"class":116},[110,1655,128],{"class":127},[110,1657,555],{"class":120},[110,1659,1660,1662,1665],{"class":112,"line":971},[110,1661,1615],{"class":159},[110,1663,1664],{"class":120},"(count_ptr);",[110,1666,1667],{"class":134}," \u002F\u002F 仍然明确是 int* 版本\n",[110,1669,1670],{"class":112,"line":984},[110,1671,185],{"emptyLinePlaceholder":184},[110,1673,1674,1677],{"class":112,"line":995},[110,1675,1676],{"class":134},"    \u002F\u002F reset(nullptr);",[110,1678,1679],{"class":134}," \u002F\u002F ❌ 编译错误：nullptr 可以转成 int*，也可以转成 double*\n",[110,1681,1682],{"class":112,"line":1000},[110,1683,185],{"emptyLinePlaceholder":184},[110,1685,1686,1688,1690,1692,1695,1697,1699,1701,1703,1705,1707],{"class":112,"line":1009},[110,1687,527],{"class":159},[110,1689,530],{"class":120},[110,1691,533],{"class":116},[110,1693,1694],{"class":431}," \"count = \"",[110,1696,539],{"class":116},[110,1698,1584],{"class":120},[110,1700,533],{"class":116},[110,1702,546],{"class":431},[110,1704,549],{"class":127},[110,1706,552],{"class":431},[110,1708,555],{"class":120},[110,1710,1711,1713,1715,1717,1720,1722,1724,1726,1728,1730,1732],{"class":112,"line":1331},[110,1712,527],{"class":159},[110,1714,530],{"class":120},[110,1716,533],{"class":116},[110,1718,1719],{"class":431}," \"ratio = \"",[110,1721,539],{"class":116},[110,1723,1599],{"class":120},[110,1725,533],{"class":116},[110,1727,546],{"class":431},[110,1729,549],{"class":127},[110,1731,552],{"class":431},[110,1733,555],{"class":120},[110,1735,1736],{"class":112,"line":1360},[110,1737,185],{"emptyLinePlaceholder":184},[110,1739,1740,1742,1744],{"class":112,"line":1365},[110,1741,676],{"class":116},[110,1743,488],{"class":127},[110,1745,555],{"class":120},[110,1747,1748],{"class":112,"line":1370},[110,1749,686],{"class":120},[14,1751,1752,692],{},[43,1753,691],{},[101,1755,1758],{"className":1756,"code":1757,"language":698},[696],"reset int pointer\nreset double pointer\nreset int pointer\ncount = 0\nratio = 0\n",[18,1759,1757],{"__ignoreMap":106},[10,1761,691],{"id":691},[14,1763,1764],{},"见上方每个示例的\"运行结果\"。",[10,1766,1767],{"id":1767},"示例中的关键语法解释",[241,1769,1770,1789],{},[244,1771,1772],{},[247,1773,1774,1777,1780,1783,1786],{},[250,1775,1776],{"align":252},"示例",[250,1778,1779],{"align":252},"讲了什么",[250,1781,1782],{"align":252},"新出现的语法",[250,1784,1785],{"align":252},"为什么这样写",[250,1787,1788],{"align":252},"注意事项",[258,1790,1791,1814,1831,1856],{},[247,1792,1793,1796,1799,1806,1809],{},[263,1794,1795],{"align":252},"示例 1",[263,1797,1798],{"align":252},"nullptr 基本用法",[263,1800,1801,1803,1804],{"align":252},[18,1802,5],{},"、",[18,1805,277],{},[263,1807,1808],{"align":252},"初始化指针为\"空\"，类型安全",[263,1810,1811,1812],{"align":252},"nullptr 的类型是 ",[18,1813,68],{},[247,1815,1816,1819,1822,1825,1828],{},[263,1817,1818],{"align":252},"示例 2",[263,1820,1821],{"align":252},"解决重载歧义",[263,1823,1824],{"align":252},"重载函数中 nullptr 匹配指针版本",[263,1826,1827],{"align":252},"NULL 不能区分整数和指针重载，nullptr 可以",[263,1829,1830],{"align":252},"这就是 nullptr 替代 NULL 的核心原因",[247,1832,1833,1836,1839,1847,1850],{},[263,1834,1835],{"align":252},"示例 3",[263,1837,1838],{"align":252},"模板和智能指针",[263,1840,1841,1803,1844],{"align":252},[18,1842,1843],{},"shared_ptr = nullptr",[18,1845,1846],{},"if(sp)",[263,1848,1849],{"align":252},"智能指针也能用 nullptr 初始化",[263,1851,1852,1853],{"align":252},"智能指针的 bool 转换等价于 ",[18,1854,1855],{},"!= nullptr",[247,1857,1858,1861,1864,1872,1875],{},[263,1859,1860],{"align":252},"示例 4",[263,1862,1863],{"align":252},"多个指针重载",[263,1865,1866,1803,1868,1803,1870],{"align":252},[18,1867,117],{},[18,1869,141],{},[18,1871,5],{},[263,1873,1874],{"align":252},"nullptr 能排除整数重载，但不能替你选择具体指针类型",[263,1876,1877],{"align":252},"多个指针重载时先把 nullptr 放进明确类型的指针变量",[10,1879,1880],{"id":1880},"常见错误",[14,1882,1883],{},[43,1884,1885],{},"错误 1：以为 nullptr 可以匹配任意一个指针重载",[101,1887,1889],{"className":103,"code":1888,"language":105,"meta":106,"style":106},"void f(int*);\nvoid f(double*);\n\nf(nullptr);  \u002F\u002F ❌ 编译错误：两个指针版本都能匹配\n",[18,1890,1891,1904,1916,1920],{"__ignoreMap":106},[110,1892,1893,1895,1898,1900,1902],{"class":112,"line":113},[110,1894,729],{"class":116},[110,1896,1897],{"class":159}," f",[110,1899,735],{"class":120},[110,1901,117],{"class":116},[110,1903,1317],{"class":120},[110,1905,1906,1908,1910,1912,1914],{"class":112,"line":138},[110,1907,729],{"class":116},[110,1909,1897],{"class":159},[110,1911,735],{"class":120},[110,1913,141],{"class":116},[110,1915,1317],{"class":120},[110,1917,1918],{"class":112,"line":156},[110,1919,185],{"emptyLinePlaceholder":184},[110,1921,1922,1925,1927,1929,1931],{"class":112,"line":181},[110,1923,1924],{"class":159},"f",[110,1926,735],{"class":120},[110,1928,5],{"class":127},[110,1930,913],{"class":120},[110,1932,1933],{"class":134},"  \u002F\u002F ❌ 编译错误：两个指针版本都能匹配\n",[14,1935,1936,1937],{},"正确做法：先明确类型：",[18,1938,1939],{},"int* p = nullptr; f(p);",[14,1941,1942],{},[43,1943,1944,1945,1947],{},"错误 2：把 ",[18,1946,5],{}," 赋给整数",[101,1949,1951],{"className":103,"code":1950,"language":105,"meta":106,"style":106},"int n = nullptr;  \u002F\u002F ❌ 编译错误！nullptr 不能隐式转换为整数\n",[18,1952,1953],{"__ignoreMap":106},[110,1954,1955,1957,1959,1961,1963,1965],{"class":112,"line":113},[110,1956,448],{"class":116},[110,1958,763],{"class":120},[110,1960,124],{"class":116},[110,1962,128],{"class":127},[110,1964,131],{"class":120},[110,1966,1967],{"class":134},"  \u002F\u002F ❌ 编译错误！nullptr 不能隐式转换为整数\n",[14,1969,1970],{},"正确做法：整型用 0，指针用 nullptr。",[14,1972,1973],{},[43,1974,1975,1976,1978],{},"错误 3：用 ",[18,1977,20],{}," 做指针判断",[101,1980,1982],{"className":103,"code":1981,"language":105,"meta":106,"style":106},"if (p == NULL) { ... }  \u002F\u002F 能工作，但不是最佳实践\n",[18,1983,1984],{"__ignoreMap":106},[110,1985,1986,1988,1990,1992,1994,1997],{"class":112,"line":113},[110,1987,197],{"class":116},[110,1989,200],{"class":120},[110,1991,203],{"class":116},[110,1993,505],{"class":127},[110,1995,1996],{"class":120},") { ... }",[110,1998,1999],{"class":134},"  \u002F\u002F 能工作，但不是最佳实践\n",[14,2001,2002,2003,2006,2007,96],{},"正确做法：用 ",[18,2004,2005],{},"if (p == nullptr)"," 或直接 ",[18,2008,2009],{},"if (!p)",[14,2011,2012],{},[43,2013,2014],{},"错误 4：把 nullptr 当布尔值用在非预期的地方",[101,2016,2018],{"className":103,"code":2017,"language":105,"meta":106,"style":106},"std::string s = nullptr;  \u002F\u002F ❌ C++23 起直接禁止；旧标准中也是未定义行为\n",[18,2019,2020],{"__ignoreMap":106},[110,2021,2022,2024,2027,2029,2031,2033],{"class":112,"line":113},[110,2023,160],{"class":159},[110,2025,2026],{"class":120},"::string s ",[110,2028,124],{"class":116},[110,2030,128],{"class":127},[110,2032,131],{"class":120},[110,2034,2035],{"class":134},"  \u002F\u002F ❌ C++23 起直接禁止；旧标准中也是未定义行为\n",[14,2037,2038,2039,21,2041,96],{},"正确做法：空字符串用 ",[18,2040,376],{},[18,2042,2043],{},"std::string s = \"\";",[10,2045,2046],{"id":2046},"使用建议",[2048,2049,2050,2063,2073,2086],"ol",{},[30,2051,2052,2062],{},[43,2053,2054,2055,2057,2058,21,2060],{},"永远用 ",[18,2056,5],{}," 而不是 ",[18,2059,20],{},[18,2061,24],{},"：这是现代 C++ 的规则，避免类型歧义。",[30,2064,2065,2070,2071,96],{},[43,2066,2067,2068],{},"智能指针也可用 ",[18,2069,5],{},"：如 ",[18,2072,363],{},[30,2074,2075,2081,2082,2085],{},[43,2076,2077,2078,2080],{},"用 ",[18,2079,287],{}," 检查非空","：等价于 ",[18,2083,2084],{},"if (ptr != nullptr)","，更简洁。",[30,2087,2088,2091],{},[43,2089,2090],{},"不要给非指针类型赋 nullptr","：整数、字符串等不要用 nullptr 初始化。",[10,2093,2094],{"id":2094},"小结",[27,2096,2097,2107,2115,2124],{},[30,2098,2099,2101,2102,2104,2105,96],{},[18,2100,5],{}," 是类型安全的空指针常量，替代 ",[18,2103,20],{}," 和 ",[18,2106,24],{},[30,2108,2109,2111,2112,2114],{},[18,2110,5],{}," 的类型是 ",[18,2113,68],{},"，只能隐式转为指针类型。",[30,2116,2117,2118,2120,2121,2123],{},"在重载函数中，",[18,2119,5],{}," 可以正确匹配到指针版本，",[18,2122,20],{}," 不行。",[30,2125,2126,2127,96],{},"现代 C++ 中永远使用 ",[18,2128,5],{},[2130,2131,2132],"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":2134},[2135,2136,2137,2138,2139,2140,2141,2142,2148,2149,2150,2151,2152],{"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":2143},[2144,2145,2146,2147],{"id":417,"depth":156,"text":418},{"id":703,"depth":156,"text":704},{"id":1024,"depth":156,"text":1025},{"id":1394,"depth":156,"text":1395},{"id":691,"depth":138,"text":691},{"id":1767,"depth":138,"text":1767},{"id":1880,"depth":138,"text":1880},{"id":2046,"depth":138,"text":2046},{"id":2094,"depth":138,"text":2094},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","2000-0200","2023-10-05","wiki\u002F2023-10-05-cplusplus-jiao-xue","zh-cn:2023-10-05-cplusplus-jiao-xue","\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0200-nullptr",false,null,"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","zh-CN","zh-cn",{},{"title":5,"description":106},"EnM5MyefSNvRy3MT7Bq860cDszSGe8O0qJGwhYcQkXk",[2171,2177,2182,2187,2192,2197,2202,2207,2212,2217,2222,2227,2232,2237,2242,2247,2252,2257,2262,2267,2272,2277,2282,2287,2292,2297,2302,2307,2312,2317,2322,2327,2332,2337,2342,2347,2352,2357,2362,2363,2368,2373,2378,2383,2388,2393,2398,2403,2408,2413,2418,2423,2428,2433,2438,2443,2448,2453,2458,2463,2468,2473,2478,2483,2488,2493,2498,2503,2508,2513,2518,2523,2528,2533,2538,2543,2548,2553,2558,2563,2568,2573],{"path":2172,"stem":2173,"title":2174,"date":2155,"chapterOrder":2175,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0100-C++开发环境搭建与测试","C++开发环境搭建与测试","0100",0,{"path":2178,"stem":2179,"title":2180,"date":2155,"chapterOrder":2181,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0200-c-ji-chu-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F0200-C++基础初识","C++基础初识","0200",{"path":2183,"stem":2184,"title":2185,"date":2155,"chapterOrder":2186,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0300-shu-ju-lei-xing-yu-shu-ju-cun-fang","wiki\u002F2023-10-05-Cplusplus教学\u002F0300-数据类型与数据存放","数据类型与数据存放","0300",{"path":2188,"stem":2189,"title":2190,"date":2155,"chapterOrder":2191,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0400-shu-ru-shu-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F0400-输入输出","输入输出","0400",{"path":2193,"stem":2194,"title":2195,"date":2155,"chapterOrder":2196,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0500-yun-suan-fu","wiki\u002F2023-10-05-Cplusplus教学\u002F0500-运算符","运算符","0500",{"path":2198,"stem":2199,"title":2200,"date":2155,"chapterOrder":2201,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0600-cheng-xu-liu-cheng-jie-gou","wiki\u002F2023-10-05-Cplusplus教学\u002F0600-程序流程结构","程序流程结构","0600",{"path":2203,"stem":2204,"title":2205,"date":2155,"chapterOrder":2206,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0700-shu-zu","wiki\u002F2023-10-05-Cplusplus教学\u002F0700-数组","数组","0700",{"path":2208,"stem":2209,"title":2210,"date":2155,"chapterOrder":2211,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0800-han-shu-yu-tou-wen-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F0800-函数与头文件","函数与头文件","0800",{"path":2213,"stem":2214,"title":2215,"date":2155,"chapterOrder":2216,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0900-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F0900-指针","指针","0900",{"path":2218,"stem":2219,"title":2220,"date":2155,"chapterOrder":2221,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1000-jie-gou-ti-yu-gong-yong-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F1000-结构体与共用体","结构体与共用体","1000",{"path":2223,"stem":2224,"title":2225,"date":2155,"chapterOrder":2226,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1100-nei-cun-fen-qu-yu-sheng-ming-zhou-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1100-内存分区与生命周期","内存分区与生命周期","1100",{"path":2228,"stem":2229,"title":2230,"date":2155,"chapterOrder":2231,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1200-yin-yong","wiki\u002F2023-10-05-Cplusplus教学\u002F1200-引用","引用","1200",{"path":2233,"stem":2234,"title":2235,"date":2155,"chapterOrder":2236,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1300-han-shu-ti-gao-yu-ming-ming-kong-jian","wiki\u002F2023-10-05-Cplusplus教学\u002F1300-函数提高与命名空间","函数提高与命名空间","1300",{"path":2238,"stem":2239,"title":2240,"date":2155,"chapterOrder":2241,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0100-feng-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0100-封装","封装","1400-0100",{"path":2243,"stem":2244,"title":2245,"date":2155,"chapterOrder":2246,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0200-dui-xiang-chu-shi-hua-he-qing-li","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0200-对象初始化和清理","对象初始化和清理","1400-0200",{"path":2248,"stem":2249,"title":2250,"date":2155,"chapterOrder":2251,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0300-dui-xiang-mo-xing-yu-this-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0300-对象模型与this指针","对象模型与this指针","1400-0300",{"path":2253,"stem":2254,"title":2255,"date":2155,"chapterOrder":2256,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0400-you-yuan-yu-yun-suan-fu-zhong-zai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0400-友元与运算符重载","友元与运算符重载","1400-0400",{"path":2258,"stem":2259,"title":2260,"date":2155,"chapterOrder":2261,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0500-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0500-继承","继承","1400-0500",{"path":2263,"stem":2264,"title":2265,"date":2155,"chapterOrder":2266,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-0600-duo-tai","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-0600-多态","多态","1400-0600",{"path":2268,"stem":2269,"title":2270,"date":2155,"chapterOrder":2271,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1400-lei-he-dui-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F1400-类和对象","类和对象","1400",{"path":2273,"stem":2274,"title":2275,"date":2155,"chapterOrder":2276,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1500-wen-jian-cao-zuo","wiki\u002F2023-10-05-Cplusplus教学\u002F1500-文件操作","文件操作","1500",{"path":2278,"stem":2279,"title":2280,"date":2155,"chapterOrder":2281,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1600-yi-chang-chu-li-yu-cuo-wu-ma","wiki\u002F2023-10-05-Cplusplus教学\u002F1600-异常处理与错误码","异常处理","1600",{"path":2283,"stem":2284,"title":2285,"date":2155,"chapterOrder":2286,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1700-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F1700-模板","模板","1700",{"path":2288,"stem":2289,"title":2290,"date":2155,"chapterOrder":2291,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0100-stl-chu-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0100-STL初识","STL初识","1800-0100",{"path":2293,"stem":2294,"title":2295,"date":2155,"chapterOrder":2296,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0200-std-array","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0200-std-array","std::array","1800-0200",{"path":2298,"stem":2299,"title":2300,"date":2155,"chapterOrder":2301,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0300-string-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0300-string容器","string容器","1800-0300",{"path":2303,"stem":2304,"title":2305,"date":2155,"chapterOrder":2306,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0400-vector-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0400-vector容器","vector 容器","1800-0400",{"path":2308,"stem":2309,"title":2310,"date":2155,"chapterOrder":2311,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0500-deque-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0500-deque容器","deque 容器","1800-0500",{"path":2313,"stem":2314,"title":2315,"date":2155,"chapterOrder":2316,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0600-stack-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0600-stack容器","stack 容器","1800-0600",{"path":2318,"stem":2319,"title":2320,"date":2155,"chapterOrder":2321,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0700-queue-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0700-queue容器","queue 容器","1800-0700",{"path":2323,"stem":2324,"title":2325,"date":2155,"chapterOrder":2326,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0800-list-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0800-list容器","list 容器","1800-0800",{"path":2328,"stem":2329,"title":2330,"date":2155,"chapterOrder":2331,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-0900-set-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-0900-set容器","set \u002F multiset 容器","1800-0900",{"path":2333,"stem":2334,"title":2335,"date":2155,"chapterOrder":2336,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1000-map-rong-qi","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1000-map容器","map \u002F multimap 容器","1800-1000",{"path":2338,"stem":2339,"title":2340,"date":2155,"chapterOrder":2341,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1100-han-shu-dui-xiang-yu-wei-ci","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1100-函数对象与谓词","函数对象与谓词","1800-1100",{"path":2343,"stem":2344,"title":2345,"date":2155,"chapterOrder":2346,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-1200-chang-yong-suan-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-1200-常用算法","常用算法","1800-1200",{"path":2348,"stem":2349,"title":2350,"date":2155,"chapterOrder":2351,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1800-stl-ti-gao-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F1800-STL提高编程","STL提高编程","1800",{"path":2353,"stem":2354,"title":2355,"date":2155,"chapterOrder":2356,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F1900-c-lei-xing-zhuan-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F1900-C++类型转换","C++类型转换","1900",{"path":2358,"stem":2359,"title":2360,"date":2155,"chapterOrder":2361,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0100-auto","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0100-auto","auto","2000-0100",{"path":2153,"stem":2161,"title":5,"date":2155,"chapterOrder":2154,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},{"path":2364,"stem":2365,"title":2366,"date":2155,"chapterOrder":2367,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0300-using","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0300-using","using","2000-0300",{"path":2369,"stem":2370,"title":2371,"date":2155,"chapterOrder":2372,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0400-enum-class","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0400-enum-class","enum class","2000-0400",{"path":2374,"stem":2375,"title":2376,"date":2155,"chapterOrder":2377,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0500-fan-wei-for-xun-huan","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0500-范围for循环","范围 for 循环","2000-0500",{"path":2379,"stem":2380,"title":2381,"date":2155,"chapterOrder":2382,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0600-jie-gou-hua-bang-ding","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0600-结构化绑定","结构化绑定","2000-0600",{"path":2384,"stem":2385,"title":2386,"date":2155,"chapterOrder":2387,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0700-constexpr","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0700-constexpr","constexpr","2000-0700",{"path":2389,"stem":2390,"title":2391,"date":2155,"chapterOrder":2392,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0800-raii","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0800-RAII","RAII","2000-0800",{"path":2394,"stem":2395,"title":2396,"date":2155,"chapterOrder":2397,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0900-zhi-neng-zhi-zhen","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-0900-智能指针","智能指针","2000-0900",{"path":2399,"stem":2400,"title":2401,"date":2155,"chapterOrder":2402,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1000-you-zhi-yin-yong-he-yi-dong-yu-yi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1000-右值引用和移动语义","右值引用和移动语义","2000-1000",{"path":2404,"stem":2405,"title":2406,"date":2155,"chapterOrder":2407,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1100-lambda-biao-da-shi","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1100-Lambda表达式","Lambda 表达式","2000-1100",{"path":2409,"stem":2410,"title":2411,"date":2155,"chapterOrder":2412,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1200-std-function","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1200-std-function","std::function","2000-1200",{"path":2414,"stem":2415,"title":2416,"date":2155,"chapterOrder":2417,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1300-std-bind","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1300-std-bind","std::bind","2000-1300",{"path":2419,"stem":2420,"title":2421,"date":2155,"chapterOrder":2422,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1400-std-optional","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1400-std-optional","std::optional","2000-1400",{"path":2424,"stem":2425,"title":2426,"date":2155,"chapterOrder":2427,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1500-std-variant","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1500-std-variant","std::variant","2000-1500",{"path":2429,"stem":2430,"title":2431,"date":2155,"chapterOrder":2432,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1600-std-span","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1600-std-span","std::span","2000-1600",{"path":2434,"stem":2435,"title":2436,"date":2155,"chapterOrder":2437,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1700-std-format-print","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1700-std-format-print","std::format \u002F std::print","2000-1700",{"path":2439,"stem":2440,"title":2441,"date":2155,"chapterOrder":2442,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1800-std-chrono","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1800-std-chrono","std::chrono","2000-1800",{"path":2444,"stem":2445,"title":2446,"date":2155,"chapterOrder":2447,"chapterDepth":138,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0100-std-thread","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0100-std-thread","std::thread 与 join","2000-1900-0100",{"path":2449,"stem":2450,"title":2451,"date":2155,"chapterOrder":2452,"chapterDepth":138,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0200-mutex-lock-guard","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0200-mutex-lock-guard","mutex 与 lock_guard","2000-1900-0200",{"path":2454,"stem":2455,"title":2456,"date":2155,"chapterOrder":2457,"chapterDepth":138,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0300-std-atomic","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0300-std-atomic","std::atomic","2000-1900-0300",{"path":2459,"stem":2460,"title":2461,"date":2155,"chapterOrder":2462,"chapterDepth":138,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-0400-condition-variable","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-0400-condition-variable","condition_variable","2000-1900-0400",{"path":2464,"stem":2465,"title":2466,"date":2155,"chapterOrder":2467,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-1900-bing-fa-bian-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-1900-并发编程","并发编程","2000-1900",{"path":2469,"stem":2470,"title":2471,"date":2155,"chapterOrder":2472,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2000-std-filesystem","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2000-std-filesystem","std::filesystem","2000-2000",{"path":2474,"stem":2475,"title":2476,"date":2155,"chapterOrder":2477,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-2100-modules-jian-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-2100-modules简介","modules 简介","2000-2100",{"path":2479,"stem":2480,"title":2481,"date":2155,"chapterOrder":2482,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-xian-dai-c","wiki\u002F2023-10-05-Cplusplus教学\u002F2000-现代C++","现代C++","2000",{"path":2484,"stem":2485,"title":2486,"date":2155,"chapterOrder":2487,"chapterDepth":138,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0100-ding-shi-qi-yu-yi-bu-io","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0100-定时器与异步IO","定时器与异步 IO","2100-0100-0100",{"path":2489,"stem":2490,"title":2491,"date":2155,"chapterOrder":2492,"chapterDepth":138,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0200-boost-asio-ji-chu","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0200-Boost.Asio基础","Boost.Asio 基础","2100-0100-0200",{"path":2494,"stem":2495,"title":2496,"date":2155,"chapterOrder":2497,"chapterDepth":138,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0300-chuan-kou-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0300-串口通信","串口通信","2100-0100-0300",{"path":2499,"stem":2500,"title":2501,"date":2155,"chapterOrder":2502,"chapterDepth":138,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0400-tcp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0400-TCP通信","TCP 通信","2100-0100-0400",{"path":2504,"stem":2505,"title":2506,"date":2155,"chapterOrder":2507,"chapterDepth":138,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0500-udp-tong-xin","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0500-UDP通信","UDP 通信","2100-0100-0500",{"path":2509,"stem":2510,"title":2511,"date":2155,"chapterOrder":2512,"chapterDepth":138,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-0600-ji-qi-ren-gong-cheng-xie-fa-yu-ros2-ji-cheng","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-0600-机器人工程写法与ROS2集成","机器人工程写法与 ROS2 集成","2100-0100-0600",{"path":2514,"stem":2515,"title":2516,"date":2155,"chapterOrder":2517,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0100-boost-asio-yi-bu-io-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0100-Boost.Asio异步IO库","Boost.Asio异步IO库","2100-0100",{"path":2519,"stem":2520,"title":2521,"date":2155,"chapterOrder":2522,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0200-eigen-xian-xing-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0200-Eigen线性代数库","Eigen线性代数库","2100-0200",{"path":2524,"stem":2525,"title":2526,"date":2155,"chapterOrder":2527,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0300-opencv-ji-suan-ji-shi-jue-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0300-OpenCV计算机视觉库","OpenCV计算机视觉库","2100-0300",{"path":2529,"stem":2530,"title":2531,"date":2155,"chapterOrder":2532,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0400-pcl-dian-yun-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0400-PCL点云库","PCL点云库","2100-0400",{"path":2534,"stem":2535,"title":2536,"date":2155,"chapterOrder":2537,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-0500-sophus-li-qun-li-dai-shu-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-0500-Sophus李群李代数库","Sophus 李群李代数库","2100-0500",{"path":2539,"stem":2540,"title":2541,"date":2155,"chapterOrder":2542,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2100-chang-yong-ku","wiki\u002F2023-10-05-Cplusplus教学\u002F2100-常用库","常用库学习","2100",{"path":2544,"stem":2545,"title":2546,"date":2155,"chapterOrder":2547,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0100-cmakepresets-yu-gou-jian-an-zhuang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0100-CMakePresets与构建安装","CMakePresets与构建安装","2200-0100",{"path":2549,"stem":2550,"title":2551,"date":2155,"chapterOrder":2552,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0200-ding-ceng-cmake-yu-gong-gong-bian-yi-xuan-xiang","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0200-顶层CMake与公共编译选项","顶层CMake与公共编译选项","2200-0200",{"path":2554,"stem":2555,"title":2556,"date":2155,"chapterOrder":2557,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0300-src-yu-lib-mo-kuai-cmake-xiang-jie","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0300-src与lib模块CMake详解","src与lib模块CMake详解","2200-0300",{"path":2559,"stem":2560,"title":2561,"date":2155,"chapterOrder":2562,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0400-di-san-fang-ku-yi-lai-xie-fa","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0400-第三方库依赖写法","第三方库依赖写法","2200-0400",{"path":2564,"stem":2565,"title":2566,"date":2155,"chapterOrder":2567,"chapterDepth":113,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-0500-mu-ban-kuo-zhan-yu-chang-jian-wen-ti","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-0500-模板扩展与常见问题","模板扩展与常见问题","2200-0500",{"path":2569,"stem":2570,"title":2571,"date":2155,"chapterOrder":2572,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":2162},"\u002Fzh-cn\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","wiki\u002F2023-10-05-Cplusplus教学\u002F2200-CMake工程模板","CMake工程模板","2200",{"path":2158,"stem":2574,"title":2575,"date":2155,"chapterOrder":2163,"chapterDepth":2176,"docKey":2157,"docRoot":2158,"docTitle":2159,"isWikiDoc":184,"isWikiIndex":184},"wiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",{"variants":2577},[2578,2581,2584,2587,2590],{"path":2579,"localeSlug":2580,"i18nKey":2161},"\u002Fen-us\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","en-us",{"path":2582,"localeSlug":2583,"i18nKey":2161},"\u002Fzh-hant\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","zh-hant",{"path":2585,"localeSlug":2586,"i18nKey":2161},"\u002Fzh-hk\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","zh-hk",{"path":2588,"localeSlug":2589,"i18nKey":2161},"\u002Fzh-tw\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2000-0200-nullptr","zh-tw",{"path":2153,"localeSlug":2166,"i18nKey":2161},[2579,2164,2582,2164,2585,2164,2588,2164,2153,2164],1784646785881]