[{"data":1,"prerenderedAt":2301},["ShallowReactive",2],{"wiki-page-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan":3,"wiki-doc-items-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan":1874,"language-switcher-data-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan":2285,"wiki-i18n-paths-/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan":2300},{"id":4,"title":5,"body":6,"canonicalPath":1856,"chapter":1857,"chapterSort":1858,"date":1859,"description":180,"docI18nKey":1860,"docKey":1861,"docRoot":1862,"docTitle":1863,"extension":1864,"i18nKey":1865,"isBlogPost":1866,"isWikiDoc":324,"isWikiIndex":1866,"layout":1867,"legacyPath":1868,"locale":1869,"localeSlug":1870,"meta":1871,"navigation":324,"path":1856,"seo":1872,"sourcePath":1868,"sourceStem":1865,"stem":1865,"wikiDepth":187,"__hash__":1873},"content/wiki/2023-10-05-Cplusplus教学/ch17-C++类型转换.md","C++类型转换",{"type":7,"value":8,"toc":1834},"minimark",[9,13,17,52,62,65,68,71,158,161,165,168,171,174,204,211,214,287,292,295,300,309,564,570,578,582,588,949,953,959,975,979,995,1137,1141,1147,1167,1171,1177,1389,1393,1399,1402,1405,1498,1502,1505,1532,1543,1546,1568,1576,1588,1591,1595,1639,1648,1653,1657,1707,1715,1719,1759,1764,1767,1797,1800,1827,1830],[10,11,12],"h2",{"id":12},"本节解决什么问题",[14,15,16],"p",{},"C++ 中经常会遇到“把一种类型当成另一种类型使用”的场景，例如：",[18,19,20,33,39,42,49],"ul",{},[21,22,23,24,28,29,32],"li",{},"把 ",[25,26,27],"code",{},"double"," 转成 ",[25,30,31],{},"int","。",[21,34,23,35,38],{},[25,36,37],{},"enum class"," 转成整数。",[21,40,41],{},"把基类指针安全地转成派生类指针。",[21,43,44,45,48],{},"临时去掉 ",[25,46,47],{},"const"," 限定，适配旧接口。",[21,50,51],{},"在底层代码里把指针、整数、字节视图互相转换。",[14,53,54,55,58,59,61],{},"C 风格强转写法 ",[25,56,57],{},"(目标类型)表达式"," 能做很多事，但问题也在这里：它太“万能”，读代码的人很难一眼看出这次转换到底是普通数值转换、继承层级转换、去掉 ",[25,60,47],{},"，还是危险的底层重解释。",[14,63,64],{},"C++ 提供了四个更明确的类型转换运算符，让转换意图写在代码里。",[10,66,67],{"id":67},"这个特性是什么",[14,69,70],{},"C++ 的四种显式类型转换是：",[72,73,74,91],"table",{},[75,76,77],"thead",{},[78,79,80,85,88],"tr",{},[81,82,84],"th",{"align":83},"left","转换方式",[81,86,87],{"align":83},"主要用途",[81,89,90],{"align":83},"安全程度",[92,93,94,108,125,145],"tbody",{},[78,95,96,102,105],{},[97,98,99],"td",{"align":83},[25,100,101],{},"static_cast\u003CT>(expr)",[97,103,104],{"align":83},"常规类型转换，如数值、枚举、父子类上行转换",[97,106,107],{"align":83},"常用，编译期检查",[78,109,110,115,118],{},[97,111,112],{"align":83},[25,113,114],{},"dynamic_cast\u003CT>(expr)",[97,116,117],{"align":83},"多态类型的安全向下转换",[97,119,120,121,124],{"align":83},"运行期检查，失败返回 ",[25,122,123],{},"nullptr"," 或抛异常",[78,126,127,132,142],{},[97,128,129],{"align":83},[25,130,131],{},"const_cast\u003CT>(expr)",[97,133,134,135,137,138,141],{"align":83},"添加或移除 ",[25,136,47],{}," / ",[25,139,140],{},"volatile"," 限定",[97,143,144],{"align":83},"要非常克制",[78,146,147,152,155],{},[97,148,149],{"align":83},[25,150,151],{},"reinterpret_cast\u003CT>(expr)",[97,153,154],{"align":83},"底层二进制重解释，如指针和整数互转",[97,156,157],{"align":83},"最危险，少用",[14,159,160],{},"原则：能不用强转就不用；必须强转时，优先选择语义最窄、最能说明意图的转换。",[10,162,164],{"id":163},"c-标准版本","C++ 标准版本",[14,166,167],{},"C++98 就已经提供这四种转换写法，实际工程中依然推荐使用它们替代 C 风格强转。",[10,169,170],{"id":170},"需要的头文件",[14,172,173],{},"类型转换本身不需要额外头文件。示例代码使用到的库需要对应头文件，例如：",[175,176,181],"pre",{"className":177,"code":178,"language":179,"meta":180,"style":180},"language-cpp shiki shiki-themes github-light github-dark","#include \u003Ccstdint>\n#include \u003Ciostream>\n","cpp","",[25,182,183,196],{"__ignoreMap":180},[184,185,188,192],"span",{"class":186,"line":187},"line",1,[184,189,191],{"class":190},"szBVR","#include",[184,193,195],{"class":194},"sZZnC"," \u003Ccstdint>\n",[184,197,199,201],{"class":186,"line":198},2,[184,200,191],{"class":190},[184,202,203],{"class":194}," \u003Ciostream>\n",[14,205,206,210],{},[207,208,209],"strong",{},"运行/观察结果："," 这段是头文件示例，放到完整程序顶部即可。",[10,212,213],{"id":213},"基本语法",[175,215,217],{"className":177,"code":216,"language":179,"meta":180,"style":180},"目标类型 value = static_cast\u003C目标类型>(表达式);\n目标类型 value = dynamic_cast\u003C目标类型>(表达式);\n目标类型 value = const_cast\u003C目标类型>(表达式);\n目标类型 value = reinterpret_cast\u003C目标类型>(表达式);\n",[25,218,219,240,255,271],{"__ignoreMap":180},[184,220,221,225,228,231,234,237],{"class":186,"line":187},[184,222,224],{"class":223},"sVt8B","目标类型 value ",[184,226,227],{"class":190},"=",[184,229,230],{"class":190}," static_cast\u003C",[184,232,233],{"class":223},"目标类型",[184,235,236],{"class":190},">",[184,238,239],{"class":223},"(表达式);\n",[184,241,242,244,246,249,251,253],{"class":186,"line":198},[184,243,224],{"class":223},[184,245,227],{"class":190},[184,247,248],{"class":190}," dynamic_cast\u003C",[184,250,233],{"class":223},[184,252,236],{"class":190},[184,254,239],{"class":223},[184,256,258,260,262,265,267,269],{"class":186,"line":257},3,[184,259,224],{"class":223},[184,261,227],{"class":190},[184,263,264],{"class":190}," const_cast\u003C",[184,266,233],{"class":223},[184,268,236],{"class":190},[184,270,239],{"class":223},[184,272,274,276,278,281,283,285],{"class":186,"line":273},4,[184,275,224],{"class":223},[184,277,227],{"class":190},[184,279,280],{"class":190}," reinterpret_cast\u003C",[184,282,233],{"class":223},[184,284,236],{"class":190},[184,286,239],{"class":223},[14,288,289,291],{},[207,290,209],{}," 这段是语法格式说明，重点看四种转换的写法差异。",[10,293,294],{"id":294},"示例代码",[296,297,299],"h3",{"id":298},"示例-1static_cast-处理常规转换","示例 1：static_cast 处理常规转换",[14,301,302,305,306,308],{},[25,303,304],{},"static_cast"," 适合明确、常规、编译期能检查的转换。比如数值转换、",[25,307,37],{}," 转整数、父类指针指向子类对象等。",[175,310,312],{"className":177,"code":311,"language":179,"meta":180,"style":180},"#include \u003Ciostream>\n\nenum class Status\n{\n    ok = 200,\n    not_found = 404\n};\n\nint main()\n{\n    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    double score = 89.7;\n    int integer_score = static_cast\u003Cint>(score);\n\n    Status status = Status::not_found;\n    int status_code = static_cast\u003Cint>(status);\n\n    std::cout \u003C\u003C \"integer_score = \" \u003C\u003C integer_score \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C \"status_code = \" \u003C\u003C status_code \u003C\u003C \"\\n\";\n\n    // 返回 0 表示程序正常结束。\n    return 0;\n}\n",[25,313,314,320,326,338,343,359,370,376,381,392,397,404,421,438,443,457,472,477,510,536,541,547,558],{"__ignoreMap":180},[184,315,316,318],{"class":186,"line":187},[184,317,191],{"class":190},[184,319,203],{"class":194},[184,321,322],{"class":186,"line":198},[184,323,325],{"emptyLinePlaceholder":324},true,"\n",[184,327,328,331,334],{"class":186,"line":257},[184,329,330],{"class":190},"enum",[184,332,333],{"class":190}," class",[184,335,337],{"class":336},"sScJk"," Status\n",[184,339,340],{"class":186,"line":273},[184,341,342],{"class":223},"{\n",[184,344,346,350,353,356],{"class":186,"line":345},5,[184,347,349],{"class":348},"sj4cs","    ok",[184,351,352],{"class":190}," =",[184,354,355],{"class":348}," 200",[184,357,358],{"class":223},",\n",[184,360,362,365,367],{"class":186,"line":361},6,[184,363,364],{"class":348},"    not_found",[184,366,352],{"class":190},[184,368,369],{"class":348}," 404\n",[184,371,373],{"class":186,"line":372},7,[184,374,375],{"class":223},"};\n",[184,377,379],{"class":186,"line":378},8,[184,380,325],{"emptyLinePlaceholder":324},[184,382,384,386,389],{"class":186,"line":383},9,[184,385,31],{"class":190},[184,387,388],{"class":336}," main",[184,390,391],{"class":223},"()\n",[184,393,395],{"class":186,"line":394},10,[184,396,342],{"class":223},[184,398,400],{"class":186,"line":399},11,[184,401,403],{"class":402},"sJ8bj","    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n",[184,405,407,410,413,415,418],{"class":186,"line":406},12,[184,408,409],{"class":190},"    double",[184,411,412],{"class":223}," score ",[184,414,227],{"class":190},[184,416,417],{"class":348}," 89.7",[184,419,420],{"class":223},";\n",[184,422,424,427,430,432,435],{"class":186,"line":423},13,[184,425,426],{"class":190},"    int",[184,428,429],{"class":223}," integer_score ",[184,431,227],{"class":190},[184,433,434],{"class":190}," static_cast\u003Cint>",[184,436,437],{"class":223},"(score);\n",[184,439,441],{"class":186,"line":440},14,[184,442,325],{"emptyLinePlaceholder":324},[184,444,446,449,451,454],{"class":186,"line":445},15,[184,447,448],{"class":223},"    Status status ",[184,450,227],{"class":190},[184,452,453],{"class":336}," Status",[184,455,456],{"class":223},"::not_found;\n",[184,458,460,462,465,467,469],{"class":186,"line":459},16,[184,461,426],{"class":190},[184,463,464],{"class":223}," status_code ",[184,466,227],{"class":190},[184,468,434],{"class":190},[184,470,471],{"class":223},"(status);\n",[184,473,475],{"class":186,"line":474},17,[184,476,325],{"emptyLinePlaceholder":324},[184,478,480,483,486,489,492,495,497,499,502,505,508],{"class":186,"line":479},18,[184,481,482],{"class":336},"    std",[184,484,485],{"class":223},"::cout ",[184,487,488],{"class":190},"\u003C\u003C",[184,490,491],{"class":194}," \"integer_score = \"",[184,493,494],{"class":190}," \u003C\u003C",[184,496,429],{"class":223},[184,498,488],{"class":190},[184,500,501],{"class":194}," \"",[184,503,504],{"class":348},"\\n",[184,506,507],{"class":194},"\"",[184,509,420],{"class":223},[184,511,513,515,517,519,522,524,526,528,530,532,534],{"class":186,"line":512},19,[184,514,482],{"class":336},[184,516,485],{"class":223},[184,518,488],{"class":190},[184,520,521],{"class":194}," \"status_code = \"",[184,523,494],{"class":190},[184,525,464],{"class":223},[184,527,488],{"class":190},[184,529,501],{"class":194},[184,531,504],{"class":348},[184,533,507],{"class":194},[184,535,420],{"class":223},[184,537,539],{"class":186,"line":538},20,[184,540,325],{"emptyLinePlaceholder":324},[184,542,544],{"class":186,"line":543},21,[184,545,546],{"class":402},"    // 返回 0 表示程序正常结束。\n",[184,548,550,553,556],{"class":186,"line":549},22,[184,551,552],{"class":190},"    return",[184,554,555],{"class":348}," 0",[184,557,420],{"class":223},[184,559,561],{"class":186,"line":560},23,[184,562,563],{"class":223},"}\n",[14,565,566,569],{},[207,567,568],{},"运行结果","：",[175,571,576],{"className":572,"code":574,"language":575,"meta":180},[573],"language-text","integer_score = 89\nstatus_code = 404\n","text",[25,577,574],{"__ignoreMap":180},[296,579,581],{"id":580},"示例-2dynamic_cast-安全判断真实对象类型","示例 2：dynamic_cast 安全判断真实对象类型",[14,583,584,587],{},[25,585,586],{},"dynamic_cast"," 常用于多态基类。向下转换时，它会在运行期检查对象真实类型。",[175,589,591],{"className":177,"code":590,"language":179,"meta":180,"style":180},"#include \u003Ciostream>\n\nstruct Animal\n{\n    virtual ~Animal() = default;\n};\n\nstruct Cat : Animal\n{\n    void meow() const\n    {\n        std::cout \u003C\u003C \"cat: meow\\n\";\n    }\n};\n\nstruct Dog : Animal\n{\n};\n\nvoid try_meow(Animal* animal)\n{\n    Cat* cat = dynamic_cast\u003CCat*>(animal);\n\n    if (cat != nullptr)\n    {\n        cat->meow();\n    }\n    else\n    {\n        std::cout \u003C\u003C \"not a cat\\n\";\n    }\n}\n\nint main()\n{\n    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    Cat cat;\n    Dog dog;\n\n    try_meow(&cat);\n    try_meow(&dog);\n\n    // 返回 0 表示程序正常结束。\n    return 0;\n}\n",[25,592,593,599,603,611,615,633,637,641,651,655,668,673,691,696,700,704,713,717,721,725,749,753,776,780,797,802,814,819,825,830,848,853,858,863,872,877,882,888,894,899,913,925,930,935,944],{"__ignoreMap":180},[184,594,595,597],{"class":186,"line":187},[184,596,191],{"class":190},[184,598,203],{"class":194},[184,600,601],{"class":186,"line":198},[184,602,325],{"emptyLinePlaceholder":324},[184,604,605,608],{"class":186,"line":257},[184,606,607],{"class":190},"struct",[184,609,610],{"class":336}," Animal\n",[184,612,613],{"class":186,"line":273},[184,614,342],{"class":223},[184,616,617,620,623,626,628,631],{"class":186,"line":345},[184,618,619],{"class":190},"    virtual",[184,621,622],{"class":336}," ~Animal",[184,624,625],{"class":223},"() ",[184,627,227],{"class":190},[184,629,630],{"class":190}," default",[184,632,420],{"class":223},[184,634,635],{"class":186,"line":361},[184,636,375],{"class":223},[184,638,639],{"class":186,"line":372},[184,640,325],{"emptyLinePlaceholder":324},[184,642,643,645,648],{"class":186,"line":378},[184,644,607],{"class":190},[184,646,647],{"class":336}," Cat",[184,649,650],{"class":223}," : Animal\n",[184,652,653],{"class":186,"line":383},[184,654,342],{"class":223},[184,656,657,660,663,665],{"class":186,"line":394},[184,658,659],{"class":190},"    void",[184,661,662],{"class":336}," meow",[184,664,625],{"class":223},[184,666,667],{"class":190},"const\n",[184,669,670],{"class":186,"line":399},[184,671,672],{"class":223},"    {\n",[184,674,675,678,680,682,685,687,689],{"class":186,"line":406},[184,676,677],{"class":336},"        std",[184,679,485],{"class":223},[184,681,488],{"class":190},[184,683,684],{"class":194}," \"cat: meow",[184,686,504],{"class":348},[184,688,507],{"class":194},[184,690,420],{"class":223},[184,692,693],{"class":186,"line":423},[184,694,695],{"class":223},"    }\n",[184,697,698],{"class":186,"line":440},[184,699,375],{"class":223},[184,701,702],{"class":186,"line":445},[184,703,325],{"emptyLinePlaceholder":324},[184,705,706,708,711],{"class":186,"line":459},[184,707,607],{"class":190},[184,709,710],{"class":336}," Dog",[184,712,650],{"class":223},[184,714,715],{"class":186,"line":474},[184,716,342],{"class":223},[184,718,719],{"class":186,"line":479},[184,720,375],{"class":223},[184,722,723],{"class":186,"line":512},[184,724,325],{"emptyLinePlaceholder":324},[184,726,727,730,733,736,739,742,746],{"class":186,"line":538},[184,728,729],{"class":190},"void",[184,731,732],{"class":336}," try_meow",[184,734,735],{"class":223},"(",[184,737,738],{"class":336},"Animal",[184,740,741],{"class":190},"*",[184,743,745],{"class":744},"s4XuR"," animal",[184,747,748],{"class":223},")\n",[184,750,751],{"class":186,"line":543},[184,752,342],{"class":223},[184,754,755,758,760,763,765,767,770,773],{"class":186,"line":549},[184,756,757],{"class":223},"    Cat",[184,759,741],{"class":190},[184,761,762],{"class":223}," cat ",[184,764,227],{"class":190},[184,766,248],{"class":190},[184,768,769],{"class":223},"Cat",[184,771,772],{"class":190},"*>",[184,774,775],{"class":223},"(animal);\n",[184,777,778],{"class":186,"line":560},[184,779,325],{"emptyLinePlaceholder":324},[184,781,783,786,789,792,795],{"class":186,"line":782},24,[184,784,785],{"class":190},"    if",[184,787,788],{"class":223}," (cat ",[184,790,791],{"class":190},"!=",[184,793,794],{"class":348}," nullptr",[184,796,748],{"class":223},[184,798,800],{"class":186,"line":799},25,[184,801,672],{"class":223},[184,803,805,808,811],{"class":186,"line":804},26,[184,806,807],{"class":223},"        cat->",[184,809,810],{"class":336},"meow",[184,812,813],{"class":223},"();\n",[184,815,817],{"class":186,"line":816},27,[184,818,695],{"class":223},[184,820,822],{"class":186,"line":821},28,[184,823,824],{"class":190},"    else\n",[184,826,828],{"class":186,"line":827},29,[184,829,672],{"class":223},[184,831,833,835,837,839,842,844,846],{"class":186,"line":832},30,[184,834,677],{"class":336},[184,836,485],{"class":223},[184,838,488],{"class":190},[184,840,841],{"class":194}," \"not a cat",[184,843,504],{"class":348},[184,845,507],{"class":194},[184,847,420],{"class":223},[184,849,851],{"class":186,"line":850},31,[184,852,695],{"class":223},[184,854,856],{"class":186,"line":855},32,[184,857,563],{"class":223},[184,859,861],{"class":186,"line":860},33,[184,862,325],{"emptyLinePlaceholder":324},[184,864,866,868,870],{"class":186,"line":865},34,[184,867,31],{"class":190},[184,869,388],{"class":336},[184,871,391],{"class":223},[184,873,875],{"class":186,"line":874},35,[184,876,342],{"class":223},[184,878,880],{"class":186,"line":879},36,[184,881,403],{"class":402},[184,883,885],{"class":186,"line":884},37,[184,886,887],{"class":223},"    Cat cat;\n",[184,889,891],{"class":186,"line":890},38,[184,892,893],{"class":223},"    Dog dog;\n",[184,895,897],{"class":186,"line":896},39,[184,898,325],{"emptyLinePlaceholder":324},[184,900,902,905,907,910],{"class":186,"line":901},40,[184,903,904],{"class":336},"    try_meow",[184,906,735],{"class":223},[184,908,909],{"class":190},"&",[184,911,912],{"class":223},"cat);\n",[184,914,916,918,920,922],{"class":186,"line":915},41,[184,917,904],{"class":336},[184,919,735],{"class":223},[184,921,909],{"class":190},[184,923,924],{"class":223},"dog);\n",[184,926,928],{"class":186,"line":927},42,[184,929,325],{"emptyLinePlaceholder":324},[184,931,933],{"class":186,"line":932},43,[184,934,546],{"class":402},[184,936,938,940,942],{"class":186,"line":937},44,[184,939,552],{"class":190},[184,941,555],{"class":348},[184,943,420],{"class":223},[184,945,947],{"class":186,"line":946},45,[184,948,563],{"class":223},[14,950,951,569],{},[207,952,568],{},[175,954,957],{"className":955,"code":956,"language":575,"meta":180},[573],"cat: meow\nnot a cat\n",[25,958,956],{"__ignoreMap":180},[960,961,962],"blockquote",{},[14,963,964,965,967,968,970,971,974],{},"注意：",[25,966,586],{}," 用在指针上，转换失败会得到 ",[25,969,123],{},"；用在引用上，转换失败会抛出 ",[25,972,973],{},"std::bad_cast","。它要求基类至少有一个虚函数，通常是虚析构函数。",[296,976,978],{"id":977},"示例-3const_cast-只改变-const-限定","示例 3：const_cast 只改变 const 限定",[14,980,981,984,985,137,987,989,990,28,992,994],{},[25,982,983],{},"const_cast"," 只能添加或移除 ",[25,986,47],{},[25,988,140],{},"，不能把 ",[25,991,31],{},[25,993,27],{},"，也不能把不相关类型互转。",[175,996,998],{"className":177,"code":997,"language":179,"meta":180,"style":180},"#include \u003Ciostream>\n\nint main()\n{\n    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    int value = 10;\n    const int& readonly_ref = value;\n\n    int& writable_ref = const_cast\u003Cint&>(readonly_ref);\n    writable_ref = 20;\n\n    std::cout \u003C\u003C \"value = \" \u003C\u003C value \u003C\u003C \"\\n\";\n\n    // 返回 0 表示程序正常结束。\n    return 0;\n}\n",[25,999,1000,1006,1010,1018,1022,1026,1040,1056,1060,1076,1088,1092,1117,1121,1125,1133],{"__ignoreMap":180},[184,1001,1002,1004],{"class":186,"line":187},[184,1003,191],{"class":190},[184,1005,203],{"class":194},[184,1007,1008],{"class":186,"line":198},[184,1009,325],{"emptyLinePlaceholder":324},[184,1011,1012,1014,1016],{"class":186,"line":257},[184,1013,31],{"class":190},[184,1015,388],{"class":336},[184,1017,391],{"class":223},[184,1019,1020],{"class":186,"line":273},[184,1021,342],{"class":223},[184,1023,1024],{"class":186,"line":345},[184,1025,403],{"class":402},[184,1027,1028,1030,1033,1035,1038],{"class":186,"line":361},[184,1029,426],{"class":190},[184,1031,1032],{"class":223}," value ",[184,1034,227],{"class":190},[184,1036,1037],{"class":348}," 10",[184,1039,420],{"class":223},[184,1041,1042,1045,1048,1051,1053],{"class":186,"line":372},[184,1043,1044],{"class":190},"    const",[184,1046,1047],{"class":190}," int&",[184,1049,1050],{"class":223}," readonly_ref ",[184,1052,227],{"class":190},[184,1054,1055],{"class":223}," value;\n",[184,1057,1058],{"class":186,"line":378},[184,1059,325],{"emptyLinePlaceholder":324},[184,1061,1062,1065,1068,1070,1073],{"class":186,"line":383},[184,1063,1064],{"class":190},"    int&",[184,1066,1067],{"class":223}," writable_ref ",[184,1069,227],{"class":190},[184,1071,1072],{"class":190}," const_cast\u003Cint&>",[184,1074,1075],{"class":223},"(readonly_ref);\n",[184,1077,1078,1081,1083,1086],{"class":186,"line":394},[184,1079,1080],{"class":223},"    writable_ref ",[184,1082,227],{"class":190},[184,1084,1085],{"class":348}," 20",[184,1087,420],{"class":223},[184,1089,1090],{"class":186,"line":399},[184,1091,325],{"emptyLinePlaceholder":324},[184,1093,1094,1096,1098,1100,1103,1105,1107,1109,1111,1113,1115],{"class":186,"line":406},[184,1095,482],{"class":336},[184,1097,485],{"class":223},[184,1099,488],{"class":190},[184,1101,1102],{"class":194}," \"value = \"",[184,1104,494],{"class":190},[184,1106,1032],{"class":223},[184,1108,488],{"class":190},[184,1110,501],{"class":194},[184,1112,504],{"class":348},[184,1114,507],{"class":194},[184,1116,420],{"class":223},[184,1118,1119],{"class":186,"line":423},[184,1120,325],{"emptyLinePlaceholder":324},[184,1122,1123],{"class":186,"line":440},[184,1124,546],{"class":402},[184,1126,1127,1129,1131],{"class":186,"line":445},[184,1128,552],{"class":190},[184,1130,555],{"class":348},[184,1132,420],{"class":223},[184,1134,1135],{"class":186,"line":459},[184,1136,563],{"class":223},[14,1138,1139,569],{},[207,1140,568],{},[175,1142,1145],{"className":1143,"code":1144,"language":575,"meta":180},[573],"value = 20\n",[25,1146,1144],{"__ignoreMap":180},[14,1148,1149,1150,1153,1154,1156,1157,1160,1161,1163,1164,1166],{},"这个例子能修改成功，是因为真正的原始对象 ",[25,1151,1152],{},"value"," 不是 ",[25,1155,47],{},"，只是通过 ",[25,1158,1159],{},"const int&"," 观察它。如果原始对象本身就是 ",[25,1162,47],{},"，再用 ",[25,1165,983],{}," 强行修改就是未定义行为。",[296,1168,1170],{"id":1169},"示例-4reinterpret_cast-做底层重解释","示例 4：reinterpret_cast 做底层重解释",[14,1172,1173,1176],{},[25,1174,1175],{},"reinterpret_cast"," 表示“把这段二进制数据按另一种类型解释”。它绕过了很多类型系统保护，通常只应该出现在非常底层的代码里。",[175,1178,1180],{"className":177,"code":1179,"language":179,"meta":180,"style":180},"#include \u003Ccstdint>\n#include \u003Ciostream>\n\nint main()\n{\n    // 程序从 main 函数开始执行，下面的语句会按顺序运行。\n    int value = 42;\n    int* p = &value;\n\n    std::uintptr_t raw = reinterpret_cast\u003Cstd::uintptr_t>(p);\n    int* again = reinterpret_cast\u003Cint*>(raw);\n\n    std::cout \u003C\u003C \"*again = \" \u003C\u003C *again \u003C\u003C \"\\n\";\n    std::cout \u003C\u003C std::boolalpha;\n    std::cout \u003C\u003C \"same pointer = \" \u003C\u003C (p == again) \u003C\u003C \"\\n\";\n\n    // 返回 0 表示程序正常结束。\n    return 0;\n}\n",[25,1181,1182,1188,1194,1198,1206,1210,1214,1227,1243,1247,1275,1290,1294,1323,1337,1369,1373,1377,1385],{"__ignoreMap":180},[184,1183,1184,1186],{"class":186,"line":187},[184,1185,191],{"class":190},[184,1187,195],{"class":194},[184,1189,1190,1192],{"class":186,"line":198},[184,1191,191],{"class":190},[184,1193,203],{"class":194},[184,1195,1196],{"class":186,"line":257},[184,1197,325],{"emptyLinePlaceholder":324},[184,1199,1200,1202,1204],{"class":186,"line":273},[184,1201,31],{"class":190},[184,1203,388],{"class":336},[184,1205,391],{"class":223},[184,1207,1208],{"class":186,"line":345},[184,1209,342],{"class":223},[184,1211,1212],{"class":186,"line":361},[184,1213,403],{"class":402},[184,1215,1216,1218,1220,1222,1225],{"class":186,"line":372},[184,1217,426],{"class":190},[184,1219,1032],{"class":223},[184,1221,227],{"class":190},[184,1223,1224],{"class":348}," 42",[184,1226,420],{"class":223},[184,1228,1229,1232,1235,1237,1240],{"class":186,"line":378},[184,1230,1231],{"class":190},"    int*",[184,1233,1234],{"class":223}," p ",[184,1236,227],{"class":190},[184,1238,1239],{"class":190}," &",[184,1241,1242],{"class":223},"value;\n",[184,1244,1245],{"class":186,"line":383},[184,1246,325],{"emptyLinePlaceholder":324},[184,1248,1249,1251,1254,1257,1260,1262,1264,1267,1269,1272],{"class":186,"line":394},[184,1250,482],{"class":336},[184,1252,1253],{"class":223},"::",[184,1255,1256],{"class":190},"uintptr_t",[184,1258,1259],{"class":223}," raw ",[184,1261,227],{"class":190},[184,1263,280],{"class":190},[184,1265,1266],{"class":336},"std",[184,1268,1253],{"class":223},[184,1270,1271],{"class":190},"uintptr_t>",[184,1273,1274],{"class":223},"(p);\n",[184,1276,1277,1279,1282,1284,1287],{"class":186,"line":399},[184,1278,1231],{"class":190},[184,1280,1281],{"class":223}," again ",[184,1283,227],{"class":190},[184,1285,1286],{"class":190}," reinterpret_cast\u003Cint*>",[184,1288,1289],{"class":223},"(raw);\n",[184,1291,1292],{"class":186,"line":406},[184,1293,325],{"emptyLinePlaceholder":324},[184,1295,1296,1298,1300,1302,1305,1307,1310,1313,1315,1317,1319,1321],{"class":186,"line":423},[184,1297,482],{"class":336},[184,1299,485],{"class":223},[184,1301,488],{"class":190},[184,1303,1304],{"class":194}," \"*again = \"",[184,1306,494],{"class":190},[184,1308,1309],{"class":190}," *",[184,1311,1312],{"class":223},"again ",[184,1314,488],{"class":190},[184,1316,501],{"class":194},[184,1318,504],{"class":348},[184,1320,507],{"class":194},[184,1322,420],{"class":223},[184,1324,1325,1327,1329,1331,1334],{"class":186,"line":440},[184,1326,482],{"class":336},[184,1328,485],{"class":223},[184,1330,488],{"class":190},[184,1332,1333],{"class":336}," std",[184,1335,1336],{"class":223},"::boolalpha;\n",[184,1338,1339,1341,1343,1345,1348,1350,1353,1356,1359,1361,1363,1365,1367],{"class":186,"line":445},[184,1340,482],{"class":336},[184,1342,485],{"class":223},[184,1344,488],{"class":190},[184,1346,1347],{"class":194}," \"same pointer = \"",[184,1349,494],{"class":190},[184,1351,1352],{"class":223}," (p ",[184,1354,1355],{"class":190},"==",[184,1357,1358],{"class":223}," again) ",[184,1360,488],{"class":190},[184,1362,501],{"class":194},[184,1364,504],{"class":348},[184,1366,507],{"class":194},[184,1368,420],{"class":223},[184,1370,1371],{"class":186,"line":459},[184,1372,325],{"emptyLinePlaceholder":324},[184,1374,1375],{"class":186,"line":474},[184,1376,546],{"class":402},[184,1378,1379,1381,1383],{"class":186,"line":479},[184,1380,552],{"class":190},[184,1382,555],{"class":348},[184,1384,420],{"class":223},[184,1386,1387],{"class":186,"line":512},[184,1388,563],{"class":223},[14,1390,1391,569],{},[207,1392,568],{},[175,1394,1397],{"className":1395,"code":1396,"language":575,"meta":180},[573],"*again = 42\nsame pointer = true\n",[25,1398,1396],{"__ignoreMap":180},[14,1400,1401],{},"这个例子只用于说明“指针可以转成能容纳指针的整数，再转回来”。不要随便拿转换后的整数做地址计算，也不要把不相关对象强行解释成另一个对象类型。",[10,1403,1404],{"id":1404},"四种转换怎么选",[72,1406,1407,1420],{},[75,1408,1409],{},[78,1410,1411,1414,1417],{},[81,1412,1413],{"align":83},"需求",[81,1415,1416],{"align":83},"推荐写法",[81,1418,1419],{"align":83},"说明",[92,1421,1422,1439,1454,1469,1485],{},[78,1423,1424,1431,1436],{},[97,1425,1426,1428,1429],{"align":83},[25,1427,27],{}," 转 ",[25,1430,31],{},[97,1432,1433],{"align":83},[25,1434,1435],{},"static_cast\u003Cint>(x)",[97,1437,1438],{"align":83},"明确可能丢失小数",[78,1440,1441,1446,1451],{},[97,1442,1443,1445],{"align":83},[25,1444,37],{}," 转整数",[97,1447,1448],{"align":83},[25,1449,1450],{},"static_cast\u003Cint>(e)",[97,1452,1453],{"align":83},"枚举类不会隐式转整数",[78,1455,1456,1459,1464],{},[97,1457,1458],{"align":83},"基类指针转派生类指针，并且不确定真实类型",[97,1460,1461],{"align":83},[25,1462,1463],{},"dynamic_cast\u003CDerived*>(p)",[97,1465,1466,1467],{"align":83},"转换失败可判断 ",[25,1468,123],{},[78,1470,1471,1477,1482],{},[97,1472,1473,1474,1476],{"align":83},"去掉 ",[25,1475,47],{}," 适配旧接口",[97,1478,1479],{"align":83},[25,1480,1481],{},"const_cast\u003CT*>(p)",[97,1483,1484],{"align":83},"前提是旧接口不会修改真正的 const 对象",[78,1486,1487,1490,1495],{},[97,1488,1489],{"align":83},"指针和整数互转、底层字节解释",[97,1491,1492],{"align":83},[25,1493,1494],{},"reinterpret_cast\u003CT>(x)",[97,1496,1497],{"align":83},"非常底层，优先避免",[10,1499,1501],{"id":1500},"c风格强转为什么不推荐","C风格强转为什么不推荐",[14,1503,1504],{},"C 风格强转写起来短：",[175,1506,1508],{"className":177,"code":1507,"language":179,"meta":180,"style":180},"int n = (int)3.14;\n",[25,1509,1510],{"__ignoreMap":180},[184,1511,1512,1514,1517,1519,1522,1524,1527,1530],{"class":186,"line":187},[184,1513,31],{"class":190},[184,1515,1516],{"class":223}," n ",[184,1518,227],{"class":190},[184,1520,1521],{"class":223}," (",[184,1523,31],{"class":190},[184,1525,1526],{"class":223},")",[184,1528,1529],{"class":348},"3.14",[184,1531,420],{"class":223},[14,1533,1534,1536,1537,28,1539,1542],{},[207,1535,209],{}," 这段会把 ",[25,1538,1529],{},[25,1540,1541],{},"3","，但读代码时看不出它属于哪类转换。",[14,1544,1545],{},"更推荐写成：",[175,1547,1549],{"className":177,"code":1548,"language":179,"meta":180,"style":180},"int n = static_cast\u003Cint>(3.14);\n",[25,1550,1551],{"__ignoreMap":180},[184,1552,1553,1555,1557,1559,1561,1563,1565],{"class":186,"line":187},[184,1554,31],{"class":190},[184,1556,1516],{"class":223},[184,1558,227],{"class":190},[184,1560,434],{"class":190},[184,1562,735],{"class":223},[184,1564,1529],{"class":348},[184,1566,1567],{"class":223},");\n",[14,1569,1570,1572,1573,1575],{},[207,1571,209],{}," 这段同样会得到 ",[25,1574,1541],{},"，但转换意图更明确：这是常规数值转换。",[14,1577,1578,1579,1581,1582,1584,1585,1587],{},"C 风格强转可能在背后组合多种转换能力，既可能像 ",[25,1580,304],{},"，也可能像 ",[25,1583,983],{},"，甚至接近 ",[25,1586,1175],{},"。代码越底层、类型越复杂，这种“不说明白”的风险就越大。",[10,1589,1590],{"id":1590},"常见错误",[296,1592,1594],{"id":1593},"用-static_cast-做不安全向下转换","用 static_cast 做不安全向下转换",[175,1596,1598],{"className":177,"code":1597,"language":179,"meta":180,"style":180},"Animal* animal = new Dog;\nCat* cat = static_cast\u003CCat*>(animal);  // 危险：编译可能通过，但真实对象不是 Cat\n",[25,1599,1600,1617],{"__ignoreMap":180},[184,1601,1602,1604,1606,1609,1611,1614],{"class":186,"line":187},[184,1603,738],{"class":223},[184,1605,741],{"class":190},[184,1607,1608],{"class":223}," animal ",[184,1610,227],{"class":190},[184,1612,1613],{"class":190}," new",[184,1615,1616],{"class":223}," Dog;\n",[184,1618,1619,1621,1623,1625,1627,1629,1631,1633,1636],{"class":186,"line":198},[184,1620,769],{"class":223},[184,1622,741],{"class":190},[184,1624,762],{"class":223},[184,1626,227],{"class":190},[184,1628,230],{"class":190},[184,1630,769],{"class":223},[184,1632,772],{"class":190},[184,1634,1635],{"class":223},"(animal);",[184,1637,1638],{"class":402},"  // 危险：编译可能通过，但真实对象不是 Cat\n",[14,1640,1641,1643,1644,1647],{},[207,1642,209],{}," 这段是错误示例，真实对象类型不匹配时继续使用 ",[25,1645,1646],{},"cat"," 会产生未定义行为。",[14,1649,1650,1651,32],{},"如果不确定真实类型，应该使用 ",[25,1652,586],{},[296,1654,1656],{"id":1655},"修改真正的-const-对象","修改真正的 const 对象",[175,1658,1660],{"className":177,"code":1659,"language":179,"meta":180,"style":180},"const int value = 10;\nint& ref = const_cast\u003Cint&>(value);\nref = 20;  // 未定义行为\n",[25,1661,1662,1677,1692],{"__ignoreMap":180},[184,1663,1664,1666,1669,1671,1673,1675],{"class":186,"line":187},[184,1665,47],{"class":190},[184,1667,1668],{"class":190}," int",[184,1670,1032],{"class":223},[184,1672,227],{"class":190},[184,1674,1037],{"class":348},[184,1676,420],{"class":223},[184,1678,1679,1682,1685,1687,1689],{"class":186,"line":198},[184,1680,1681],{"class":190},"int&",[184,1683,1684],{"class":223}," ref ",[184,1686,227],{"class":190},[184,1688,1072],{"class":190},[184,1690,1691],{"class":223},"(value);\n",[184,1693,1694,1697,1699,1701,1704],{"class":186,"line":257},[184,1695,1696],{"class":223},"ref ",[184,1698,227],{"class":190},[184,1700,1085],{"class":348},[184,1702,1703],{"class":223},";",[184,1705,1706],{"class":402},"  // 未定义行为\n",[14,1708,1709,1711,1712,1714],{},[207,1710,209],{}," 这段是错误示例，",[25,1713,983],{}," 可以骗过编译器，但不能让真正的常量安全地变成可修改对象。",[296,1716,1718],{"id":1717},"滥用-reinterpret_cast","滥用 reinterpret_cast",[175,1720,1722],{"className":177,"code":1721,"language":179,"meta":180,"style":180},"double d = 3.14;\nint* p = reinterpret_cast\u003Cint*>(&d);  // 危险：把 double 对象当 int 对象访问\n",[25,1723,1724,1738],{"__ignoreMap":180},[184,1725,1726,1728,1731,1733,1736],{"class":186,"line":187},[184,1727,27],{"class":190},[184,1729,1730],{"class":223}," d ",[184,1732,227],{"class":190},[184,1734,1735],{"class":348}," 3.14",[184,1737,420],{"class":223},[184,1739,1740,1743,1745,1747,1749,1751,1753,1756],{"class":186,"line":198},[184,1741,1742],{"class":190},"int*",[184,1744,1234],{"class":223},[184,1746,227],{"class":190},[184,1748,1286],{"class":190},[184,1750,735],{"class":223},[184,1752,909],{"class":190},[184,1754,1755],{"class":223},"d);",[184,1757,1758],{"class":402},"  // 危险：把 double 对象当 int 对象访问\n",[14,1760,1761,1763],{},[207,1762,209],{}," 这段是错误示例，违反类型别名规则或对象表示假设时，行为不可预测。",[10,1765,1766],{"id":1766},"使用建议",[1768,1769,1770,1775,1781,1789,1794],"ol",{},[21,1771,1772,1773,32],{},"普通转换优先用 ",[25,1774,304],{},[21,1776,1777,1778,1780],{},"多态向下转换优先用 ",[25,1779,586],{},"，并检查失败情况。",[21,1782,1783,1785,1786,1788],{},[25,1784,983],{}," 只用于适配旧接口，不要用它修改真正的 ",[25,1787,47],{}," 对象。",[21,1790,1791,1793],{},[25,1792,1175],{}," 只放在非常底层、边界清晰的代码里，并集中封装。",[21,1795,1796],{},"不要为了少打几个字使用 C 风格强转。",[10,1798,1799],{"id":1799},"小结",[18,1801,1802,1807,1812,1822],{},[21,1803,1804,1806],{},[25,1805,304],{},"：常规转换，最常用。",[21,1808,1809,1811],{},[25,1810,586],{},"：多态类型安全向下转换。",[21,1813,1814,1816,1817,137,1819,1821],{},[25,1815,983],{},"：只改变 ",[25,1818,47],{},[25,1820,140],{}," 限定。",[21,1823,1824,1826],{},[25,1825,1175],{},"：底层重解释，风险最高。",[14,1828,1829],{},"一句话记忆：能不用就不用；必须用时，把转换意图写清楚。",[1831,1832,1833],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":180,"searchDepth":198,"depth":198,"links":1835},[1836,1837,1838,1839,1840,1841,1847,1848,1849,1854,1855],{"id":12,"depth":198,"text":12},{"id":67,"depth":198,"text":67},{"id":163,"depth":198,"text":164},{"id":170,"depth":198,"text":170},{"id":213,"depth":198,"text":213},{"id":294,"depth":198,"text":294,"children":1842},[1843,1844,1845,1846],{"id":298,"depth":257,"text":299},{"id":580,"depth":257,"text":581},{"id":977,"depth":257,"text":978},{"id":1169,"depth":257,"text":1170},{"id":1404,"depth":198,"text":1404},{"id":1500,"depth":198,"text":1501},{"id":1590,"depth":198,"text":1590,"children":1850},[1851,1852,1853],{"id":1593,"depth":257,"text":1594},{"id":1655,"depth":257,"text":1656},{"id":1717,"depth":257,"text":1718},{"id":1766,"depth":198,"text":1766},{"id":1799,"depth":198,"text":1799},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan","17",17000000,"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教学/ch17-C++类型转换",false,null,"/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan","zh-CN","zh-cn",{},{"title":5,"description":180},"L8kZXBewEeI0hX72cq8_mkrEXkTBpHktE7yPnuMO5vk",[1875,1881,1887,1893,1899,1905,1911,1917,1923,1929,1935,1941,1947,1953,1959,1965,1971,1977,1983,1989,1995,2001,2007,2008,2014,2020,2026,2032,2038,2044,2050,2056,2062,2068,2074,2080,2086,2092,2098,2103,2109,2115,2121,2126,2132,2138,2144,2150,2156,2162,2168,2174,2180,2186,2192,2198,2204,2210,2216,2222,2228,2234,2240,2245,2251,2257,2263,2269,2275,2281],{"path":1876,"stem":1877,"title":1878,"date":1859,"chapter":1879,"chapterSort":1880,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1882,"stem":1883,"title":1884,"date":1859,"chapter":1885,"chapterSort":1886,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1888,"stem":1889,"title":1890,"date":1859,"chapter":1891,"chapterSort":1892,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch11-yin-yong","wiki/2023-10-05-Cplusplus教学/ch11-引用","引用","11",11000000,{"path":1894,"stem":1895,"title":1896,"date":1859,"chapter":1897,"chapterSort":1898,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1900,"stem":1901,"title":1902,"date":1859,"chapter":1903,"chapterSort":1904,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-1-feng-zhuang","wiki/2023-10-05-Cplusplus教学/ch13-1-封装","封装","13.1",13010000,{"path":1906,"stem":1907,"title":1908,"date":1859,"chapter":1909,"chapterSort":1910,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1912,"stem":1913,"title":1914,"date":1859,"chapter":1915,"chapterSort":1916,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1918,"stem":1919,"title":1920,"date":1859,"chapter":1921,"chapterSort":1922,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1924,"stem":1925,"title":1926,"date":1859,"chapter":1927,"chapterSort":1928,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-5-ji-cheng","wiki/2023-10-05-Cplusplus教学/ch13-5-继承","继承","13.5",13050000,{"path":1930,"stem":1931,"title":1932,"date":1859,"chapter":1933,"chapterSort":1934,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-6-duo-tai","wiki/2023-10-05-Cplusplus教学/ch13-6-多态","多态","13.6",13060000,{"path":1936,"stem":1937,"title":1938,"date":1859,"chapter":1939,"chapterSort":1940,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch13-lei-he-dui-xiang","wiki/2023-10-05-Cplusplus教学/ch13-类和对象","类和对象","13",13000000,{"path":1942,"stem":1943,"title":1944,"date":1859,"chapter":1945,"chapterSort":1946,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch14-wen-jian-cao-zuo","wiki/2023-10-05-Cplusplus教学/ch14-文件操作","文件操作","14",14000000,{"path":1948,"stem":1949,"title":1950,"date":1859,"chapter":1951,"chapterSort":1952,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch15-mu-ban","wiki/2023-10-05-Cplusplus教学/ch15-模板","模板","15",15000000,{"path":1954,"stem":1955,"title":1956,"date":1859,"chapter":1957,"chapterSort":1958,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1960,"stem":1961,"title":1962,"date":1859,"chapter":1963,"chapterSort":1964,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1966,"stem":1967,"title":1968,"date":1859,"chapter":1969,"chapterSort":1970,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1972,"stem":1973,"title":1974,"date":1859,"chapter":1975,"chapterSort":1976,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1978,"stem":1979,"title":1980,"date":1859,"chapter":1981,"chapterSort":1982,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1984,"stem":1985,"title":1986,"date":1859,"chapter":1987,"chapterSort":1988,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1990,"stem":1991,"title":1992,"date":1859,"chapter":1993,"chapterSort":1994,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1996,"stem":1997,"title":1998,"date":1859,"chapter":1999,"chapterSort":2000,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2002,"stem":2003,"title":2004,"date":1859,"chapter":2005,"chapterSort":2006,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1856,"stem":1865,"title":5,"date":1859,"chapter":1857,"chapterSort":1858,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},{"path":2009,"stem":2010,"title":2011,"date":1859,"chapter":2012,"chapterSort":2013,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2015,"stem":2016,"title":2017,"date":1859,"chapter":2018,"chapterSort":2019,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2021,"stem":2022,"title":2023,"date":1859,"chapter":2024,"chapterSort":2025,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2027,"stem":2028,"title":2029,"date":1859,"chapter":2030,"chapterSort":2031,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2033,"stem":2034,"title":2035,"date":1859,"chapter":2036,"chapterSort":2037,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2039,"stem":2040,"title":2041,"date":1859,"chapter":2042,"chapterSort":2043,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2045,"stem":2046,"title":2047,"date":1859,"chapter":2048,"chapterSort":2049,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2051,"stem":2052,"title":2053,"date":1859,"chapter":2054,"chapterSort":2055,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2057,"stem":2058,"title":2059,"date":1859,"chapter":2060,"chapterSort":2061,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2063,"stem":2064,"title":2065,"date":1859,"chapter":2066,"chapterSort":2067,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2069,"stem":2070,"title":2071,"date":1859,"chapter":2072,"chapterSort":2073,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2075,"stem":2076,"title":2077,"date":1859,"chapter":2078,"chapterSort":2079,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2081,"stem":2082,"title":2083,"date":1859,"chapter":2084,"chapterSort":2085,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2087,"stem":2088,"title":2089,"date":1859,"chapter":2090,"chapterSort":2091,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2093,"stem":2094,"title":2095,"date":1859,"chapter":2096,"chapterSort":2097,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2099,"stem":2100,"title":123,"date":1859,"chapter":2101,"chapterSort":2102,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-2-nullptr","wiki/2023-10-05-Cplusplus教学/ch18-2-nullptr","18.2",18020000,{"path":2104,"stem":2105,"title":2106,"date":1859,"chapter":2107,"chapterSort":2108,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2110,"stem":2111,"title":2112,"date":1859,"chapter":2113,"chapterSort":2114,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2116,"stem":2117,"title":2118,"date":1859,"chapter":2119,"chapterSort":2120,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2122,"stem":2123,"title":37,"date":1859,"chapter":2124,"chapterSort":2125,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-4-enum-class","wiki/2023-10-05-Cplusplus教学/ch18-4-enum-class","18.4",18040000,{"path":2127,"stem":2128,"title":2129,"date":1859,"chapter":2130,"chapterSort":2131,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2133,"stem":2134,"title":2135,"date":1859,"chapter":2136,"chapterSort":2137,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2139,"stem":2140,"title":2141,"date":1859,"chapter":2142,"chapterSort":2143,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2145,"stem":2146,"title":2147,"date":1859,"chapter":2148,"chapterSort":2149,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2151,"stem":2152,"title":2153,"date":1859,"chapter":2154,"chapterSort":2155,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2157,"stem":2158,"title":2159,"date":1859,"chapter":2160,"chapterSort":2161,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch18-xian-dai-c","wiki/2023-10-05-Cplusplus教学/ch18-现代C++","现代C++","18",18000000,{"path":2163,"stem":2164,"title":2165,"date":1859,"chapter":2166,"chapterSort":2167,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2169,"stem":2170,"title":2171,"date":1859,"chapter":2172,"chapterSort":2173,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2175,"stem":2176,"title":2177,"date":1859,"chapter":2178,"chapterSort":2179,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2181,"stem":2182,"title":2183,"date":1859,"chapter":2184,"chapterSort":2185,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2187,"stem":2188,"title":2189,"date":1859,"chapter":2190,"chapterSort":2191,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2193,"stem":2194,"title":2195,"date":1859,"chapter":2196,"chapterSort":2197,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2199,"stem":2200,"title":2201,"date":1859,"chapter":2202,"chapterSort":2203,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2205,"stem":2206,"title":2207,"date":1859,"chapter":2208,"chapterSort":2209,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2211,"stem":2212,"title":2213,"date":1859,"chapter":2214,"chapterSort":2215,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2217,"stem":2218,"title":2219,"date":1859,"chapter":2220,"chapterSort":2221,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2223,"stem":2224,"title":2225,"date":1859,"chapter":2226,"chapterSort":2227,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2229,"stem":2230,"title":2231,"date":1859,"chapter":2232,"chapterSort":2233,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch19-chang-yong-ku","wiki/2023-10-05-Cplusplus教学/ch19-常用库","常用库学习","19",19000000,{"path":2235,"stem":2236,"title":2237,"date":1859,"chapter":2238,"chapterSort":2239,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2241,"stem":2242,"title":2243,"date":1859,"chapter":1541,"chapterSort":2244,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch3-shu-ru-shu-chu","wiki/2023-10-05-Cplusplus教学/ch3-输入输出","输入输出",3000000,{"path":2246,"stem":2247,"title":2248,"date":1859,"chapter":2249,"chapterSort":2250,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch4-yun-suan-fu","wiki/2023-10-05-Cplusplus教学/ch4-运算符","运算符","4",4000000,{"path":2252,"stem":2253,"title":2254,"date":1859,"chapter":2255,"chapterSort":2256,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2258,"stem":2259,"title":2260,"date":1859,"chapter":2261,"chapterSort":2262,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch6-shu-zu","wiki/2023-10-05-Cplusplus教学/ch6-数组","数组","6",6000000,{"path":2264,"stem":2265,"title":2266,"date":1859,"chapter":2267,"chapterSort":2268,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":2270,"stem":2271,"title":2272,"date":1859,"chapter":2273,"chapterSort":2274,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/zh-cn/wiki/2023-10-05-cplusplus-jiao-xue/ch8-zhi-zhen","wiki/2023-10-05-Cplusplus教学/ch8-指针","指针","8",8000000,{"path":2276,"stem":2277,"title":2278,"date":1859,"chapter":2279,"chapterSort":2280,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":1866},"/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":1862,"stem":2282,"title":2283,"date":1859,"chapter":1867,"chapterSort":2284,"docKey":1861,"docRoot":1862,"docTitle":1863,"isWikiDoc":324,"isWikiIndex":324},"wiki/2023-10-05-Cplusplus教学/index","C/C++教程",0,{"variants":2286},[2287,2290,2293,2296,2299],{"path":2288,"localeSlug":2289,"i18nKey":1865},"/en-us/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan","en-us",{"path":2291,"localeSlug":2292,"i18nKey":1865},"/zh-hant/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan","zh-hant",{"path":2294,"localeSlug":2295,"i18nKey":1865},"/zh-hk/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan","zh-hk",{"path":2297,"localeSlug":2298,"i18nKey":1865},"/zh-tw/wiki/2023-10-05-cplusplus-jiao-xue/ch17-c-lei-xing-zhuan-huan","zh-tw",{"path":1856,"localeSlug":1870,"i18nKey":1865},[2288,1868,2291,1868,2294,1868,2297,1868,1856,1868],1780663033871]