[{"data":1,"prerenderedAt":612},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002Fch5-c-ming-ming-kong-jian":3,"wiki-doc-items-2023-10-05-cplusplus-jiao-xue":551},{"id":4,"title":5,"body":6,"chapter":538,"chapterSort":539,"date":540,"description":12,"docKey":541,"docRoot":542,"docTitle":543,"extension":544,"isWikiDoc":133,"isWikiIndex":545,"meta":546,"navigation":133,"path":547,"seo":548,"stem":549,"wikiDepth":46,"__hash__":550},"wiki\u002Fwiki\u002F2023-10-05-Cplusplus教学\u002Fch5-C++命名空间.md","C++命名空间",{"type":7,"value":8,"toc":533},"minimark",[9,13,21,25,32,71,74,90,94,101,432,435,438,479,485,529],[10,11,12],"p",{},"在 C++ 应用程序中。例如，您可能会写一个名为 xyz() 的函数，在另一个可用的库中也存在一个相同的函数 xyz()。这样，编译器就无法判断您所使用的是哪一个 xyz() 函数。",[10,14,15,16,20],{},"因此，引入了 ",[17,18,19],"strong",{},"命名空间"," 这个概念，专门用于解决上面的问题，它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上，命名空间就是定义了一个范围。",[22,23,24],"h3",{"id":24},"定义命名空间",[10,26,27,28,31],{},"命名空间的定义使用关键字 ",[17,29,30],{},"namespace"," ，后跟命名空间的名称，如下所示：",[33,34,39],"pre",{"className":35,"code":36,"language":37,"meta":38,"style":38},"language-cpp shiki shiki-themes github-light github-dark","namespace namespace_name {\n   \u002F\u002F 代码声明\n}\n","cpp","",[40,41,42,58,65],"code",{"__ignoreMap":38},[43,44,47,50,54],"span",{"class":45,"line":46},"line",1,[43,48,30],{"class":49},"szBVR",[43,51,53],{"class":52},"sScJk"," namespace_name",[43,55,57],{"class":56},"sVt8B"," {\n",[43,59,61],{"class":45,"line":60},2,[43,62,64],{"class":63},"sJ8bj","   \u002F\u002F 代码声明\n",[43,66,68],{"class":45,"line":67},3,[43,69,70],{"class":56},"}\n",[10,72,73],{},"为了调用带有命名空间的函数或变量，需要在前面加上命名空间的名称，如下所示：",[33,75,77],{"className":35,"code":76,"language":37,"meta":38,"style":38},"name::code;  \u002F\u002F code 可以是变量或函数\n",[40,78,79],{"__ignoreMap":38},[43,80,81,84,87],{"class":45,"line":46},[43,82,83],{"class":52},"name",[43,85,86],{"class":56},"::code;",[43,88,89],{"class":63},"  \u002F\u002F code 可以是变量或函数\n",[22,91,93],{"id":92},"using-指令","using 指令",[10,95,96,97,100],{},"您可以使用 ",[17,98,99],{},"using namespace"," 指令，这样在使用命名空间时就可以不用在前面加上命名空间的名称。这个指令会告诉编译器，后续的代码将使用指定的命名空间中的名称。",[33,102,104],{"className":35,"code":103,"language":37,"meta":38,"style":38},"#include \u003Ciostream>\nusing namespace std;\n\n\u002F\u002F 第一个命名空间\nnamespace first_space{\n   void func(){\n      cout \u003C\u003C \"Inside first_space\" \u003C\u003C endl;\n   }\n}\n\u002F\u002F 第二个命名空间\nnamespace second_space{\n   void func(){\n      cout \u003C\u003C \"Inside second_space\" \u003C\u003C endl;\n   }\n}\n\n\u002F\u002F 第三个命名空间\nnamespace third_space{\n   void func()\n   {\n      cout \u003C\u003C \"Inside second_space\" \u003C\u003C endl;\n   }\n}\n\nusing namespace first_space;\nusing second_space::func;    \u002F\u002F(与25行代码建议不能共存，因为都导入了func()函数)，（这种方法更好更推荐）\n\nint main ()\n{\n\n   \u002F\u002F 调用第一个命名空间中的函数\n   func();\n   \u002F\u002F 调用第二个命名空间中的函数   \n   func();         \u002F\u002F(与32行代码不能共存)\n   \u002F\u002F调用第三个命名空间中的函数\n   third_space::func();\n\n   return 0;\n}\n",[40,105,106,115,129,135,141,152,164,182,188,193,199,209,218,232,237,242,247,253,263,273,279,292,297,302,307,318,331,336,348,353,358,364,373,379,390,396,410,415,427],{"__ignoreMap":38},[43,107,108,111],{"class":45,"line":46},[43,109,110],{"class":49},"#include",[43,112,114],{"class":113},"sZZnC"," \u003Ciostream>\n",[43,116,117,120,123,126],{"class":45,"line":60},[43,118,119],{"class":49},"using",[43,121,122],{"class":49}," namespace",[43,124,125],{"class":52}," std",[43,127,128],{"class":56},";\n",[43,130,131],{"class":45,"line":67},[43,132,134],{"emptyLinePlaceholder":133},true,"\n",[43,136,138],{"class":45,"line":137},4,[43,139,140],{"class":63},"\u002F\u002F 第一个命名空间\n",[43,142,144,146,149],{"class":45,"line":143},5,[43,145,30],{"class":49},[43,147,148],{"class":52}," first_space",[43,150,151],{"class":56},"{\n",[43,153,155,158,161],{"class":45,"line":154},6,[43,156,157],{"class":49},"   void",[43,159,160],{"class":52}," func",[43,162,163],{"class":56},"(){\n",[43,165,167,170,173,176,179],{"class":45,"line":166},7,[43,168,169],{"class":56},"      cout ",[43,171,172],{"class":49},"\u003C\u003C",[43,174,175],{"class":113}," \"Inside first_space\"",[43,177,178],{"class":49}," \u003C\u003C",[43,180,181],{"class":56}," endl;\n",[43,183,185],{"class":45,"line":184},8,[43,186,187],{"class":56},"   }\n",[43,189,191],{"class":45,"line":190},9,[43,192,70],{"class":56},[43,194,196],{"class":45,"line":195},10,[43,197,198],{"class":63},"\u002F\u002F 第二个命名空间\n",[43,200,202,204,207],{"class":45,"line":201},11,[43,203,30],{"class":49},[43,205,206],{"class":52}," second_space",[43,208,151],{"class":56},[43,210,212,214,216],{"class":45,"line":211},12,[43,213,157],{"class":49},[43,215,160],{"class":52},[43,217,163],{"class":56},[43,219,221,223,225,228,230],{"class":45,"line":220},13,[43,222,169],{"class":56},[43,224,172],{"class":49},[43,226,227],{"class":113}," \"Inside second_space\"",[43,229,178],{"class":49},[43,231,181],{"class":56},[43,233,235],{"class":45,"line":234},14,[43,236,187],{"class":56},[43,238,240],{"class":45,"line":239},15,[43,241,70],{"class":56},[43,243,245],{"class":45,"line":244},16,[43,246,134],{"emptyLinePlaceholder":133},[43,248,250],{"class":45,"line":249},17,[43,251,252],{"class":63},"\u002F\u002F 第三个命名空间\n",[43,254,256,258,261],{"class":45,"line":255},18,[43,257,30],{"class":49},[43,259,260],{"class":52}," third_space",[43,262,151],{"class":56},[43,264,266,268,270],{"class":45,"line":265},19,[43,267,157],{"class":49},[43,269,160],{"class":52},[43,271,272],{"class":56},"()\n",[43,274,276],{"class":45,"line":275},20,[43,277,278],{"class":56},"   {\n",[43,280,282,284,286,288,290],{"class":45,"line":281},21,[43,283,169],{"class":56},[43,285,172],{"class":49},[43,287,227],{"class":113},[43,289,178],{"class":49},[43,291,181],{"class":56},[43,293,295],{"class":45,"line":294},22,[43,296,187],{"class":56},[43,298,300],{"class":45,"line":299},23,[43,301,70],{"class":56},[43,303,305],{"class":45,"line":304},24,[43,306,134],{"emptyLinePlaceholder":133},[43,308,310,312,314,316],{"class":45,"line":309},25,[43,311,119],{"class":49},[43,313,122],{"class":49},[43,315,148],{"class":52},[43,317,128],{"class":56},[43,319,321,323,325,328],{"class":45,"line":320},26,[43,322,119],{"class":49},[43,324,206],{"class":52},[43,326,327],{"class":56},"::func;",[43,329,330],{"class":63},"    \u002F\u002F(与25行代码建议不能共存，因为都导入了func()函数)，（这种方法更好更推荐）\n",[43,332,334],{"class":45,"line":333},27,[43,335,134],{"emptyLinePlaceholder":133},[43,337,339,342,345],{"class":45,"line":338},28,[43,340,341],{"class":49},"int",[43,343,344],{"class":52}," main",[43,346,347],{"class":56}," ()\n",[43,349,351],{"class":45,"line":350},29,[43,352,151],{"class":56},[43,354,356],{"class":45,"line":355},30,[43,357,134],{"emptyLinePlaceholder":133},[43,359,361],{"class":45,"line":360},31,[43,362,363],{"class":63},"   \u002F\u002F 调用第一个命名空间中的函数\n",[43,365,367,370],{"class":45,"line":366},32,[43,368,369],{"class":52},"   func",[43,371,372],{"class":56},"();\n",[43,374,376],{"class":45,"line":375},33,[43,377,378],{"class":63},"   \u002F\u002F 调用第二个命名空间中的函数   \n",[43,380,382,384,387],{"class":45,"line":381},34,[43,383,369],{"class":52},[43,385,386],{"class":56},"();",[43,388,389],{"class":63},"         \u002F\u002F(与32行代码不能共存)\n",[43,391,393],{"class":45,"line":392},35,[43,394,395],{"class":63},"   \u002F\u002F调用第三个命名空间中的函数\n",[43,397,399,402,405,408],{"class":45,"line":398},36,[43,400,401],{"class":52},"   third_space",[43,403,404],{"class":56},"::",[43,406,407],{"class":52},"func",[43,409,372],{"class":56},[43,411,413],{"class":45,"line":412},37,[43,414,134],{"emptyLinePlaceholder":133},[43,416,418,421,425],{"class":45,"line":417},38,[43,419,420],{"class":49},"   return",[43,422,424],{"class":423},"sj4cs"," 0",[43,426,128],{"class":56},[43,428,430],{"class":45,"line":429},39,[43,431,70],{"class":56},[22,433,434],{"id":434},"嵌套的命名空间",[10,436,437],{},"命名空间可以嵌套，您可以在一个命名空间中定义另一个命名空间，如下所示：",[33,439,441],{"className":35,"code":440,"language":37,"meta":38,"style":38},"namespace namespace_name1 {\n   \u002F\u002F 代码声明\n   namespace namespace_name2 {\n      \u002F\u002F 代码声明\n   }\n}\n",[40,442,443,452,456,466,471,475],{"__ignoreMap":38},[43,444,445,447,450],{"class":45,"line":46},[43,446,30],{"class":49},[43,448,449],{"class":52}," namespace_name1",[43,451,57],{"class":56},[43,453,454],{"class":45,"line":60},[43,455,64],{"class":63},[43,457,458,461,464],{"class":45,"line":67},[43,459,460],{"class":49},"   namespace",[43,462,463],{"class":52}," namespace_name2",[43,465,57],{"class":56},[43,467,468],{"class":45,"line":137},[43,469,470],{"class":63},"      \u002F\u002F 代码声明\n",[43,472,473],{"class":45,"line":143},[43,474,187],{"class":56},[43,476,477],{"class":45,"line":154},[43,478,70],{"class":56},[10,480,481,482,484],{},"您可以通过使用 ",[17,483,404],{}," 运算符来访问嵌套的命名空间中的成员：",[33,486,488],{"className":35,"code":487,"language":37,"meta":38,"style":38},"\u002F\u002F 访问 namespace_name2 中的成员\nusing namespace namespace_name1::namespace_name2;\n\n\u002F\u002F 访问 namespace_name1 中的成员\nusing namespace namespace_name1;\n",[40,489,490,495,510,514,519],{"__ignoreMap":38},[43,491,492],{"class":45,"line":46},[43,493,494],{"class":63},"\u002F\u002F 访问 namespace_name2 中的成员\n",[43,496,497,499,501,503,505,508],{"class":45,"line":60},[43,498,119],{"class":49},[43,500,122],{"class":49},[43,502,449],{"class":52},[43,504,404],{"class":56},[43,506,507],{"class":52},"namespace_name2",[43,509,128],{"class":56},[43,511,512],{"class":45,"line":67},[43,513,134],{"emptyLinePlaceholder":133},[43,515,516],{"class":45,"line":137},[43,517,518],{"class":63},"\u002F\u002F 访问 namespace_name1 中的成员\n",[43,520,521,523,525,527],{"class":45,"line":143},[43,522,119],{"class":49},[43,524,122],{"class":49},[43,526,449],{"class":52},[43,528,128],{"class":56},[530,531,532],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":38,"searchDepth":60,"depth":60,"links":534},[535,536,537],{"id":24,"depth":67,"text":24},{"id":92,"depth":67,"text":93},{"id":434,"depth":67,"text":434},"5",5000000,"2023-10-05","2023-10-05-cplusplus-jiao-xue","\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md",false,{},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002Fch5-c-ming-ming-kong-jian",{"title":5,"description":12},"wiki\u002F2023-10-05-Cplusplus教学\u002Fch5-C++命名空间","Dq6JhAYN_m_jyi0-54_nMa8biW3EJENWqMxxp-SwlBU",[552,558,564,570,576,582,583,589,595,601,607],{"path":553,"stem":554,"title":555,"date":540,"chapter":556,"chapterSort":557,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002Fch1-qian-yan","wiki\u002F2023-10-05-Cplusplus教学\u002Fch1-前言","前言","1",1000000,{"path":559,"stem":560,"title":561,"date":540,"chapter":562,"chapterSort":563,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002Fch10-xian-dai-c","wiki\u002F2023-10-05-Cplusplus教学\u002Fch10-现代C++","现代C++","10",10000000,{"path":565,"stem":566,"title":567,"date":540,"chapter":568,"chapterSort":569,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002Fch2-cheng-xu-yun-xing-yu-bian-liang-sheng-ming-zhou-qi","wiki\u002F2023-10-05-Cplusplus教学\u002Fch2-程序运行与变量生命周期","程序运行与变量生命周期","2",2000000,{"path":571,"stem":572,"title":573,"date":540,"chapter":574,"chapterSort":575,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002Fch3-tou-wen-jian","wiki\u002F2023-10-05-Cplusplus教学\u002Fch3-头文件","头文件","3",3000000,{"path":577,"stem":578,"title":579,"date":540,"chapter":580,"chapterSort":581,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002Fch4-c-yu-yan-he-c-de-i-o","wiki\u002F2023-10-05-Cplusplus教学\u002Fch4-C语言和C++的I_O","C语言 和 C++ 的I\u002FO","4",4000000,{"path":547,"stem":549,"title":5,"date":540,"chapter":538,"chapterSort":539,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},{"path":584,"stem":585,"title":586,"date":540,"chapter":587,"chapterSort":588,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002Fch6-lian-he-ti-gong-yong-ti","wiki\u002F2023-10-05-Cplusplus教学\u002Fch6-联合体（共用体）","联合体（共用体）","6",6000000,{"path":590,"stem":591,"title":592,"date":540,"chapter":593,"chapterSort":594,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002Fch7-typedef","wiki\u002F2023-10-05-Cplusplus教学\u002Fch7-typedef","typedef","7",7000000,{"path":596,"stem":597,"title":598,"date":540,"chapter":599,"chapterSort":600,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002Fch8-jie-gou-ti","wiki\u002F2023-10-05-Cplusplus教学\u002Fch8-结构体","结构体","8",8000000,{"path":602,"stem":603,"title":604,"date":540,"chapter":605,"chapterSort":606,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002Fch9-shu-ju-de-cun-fang","wiki\u002F2023-10-05-Cplusplus教学\u002Fch9-数据的存放","数据的存放","9",9000000,{"path":542,"stem":608,"title":609,"date":540,"chapter":610,"chapterSort":611,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":133},"wiki\u002F2023-10-05-Cplusplus教学\u002Findex","C\u002FC++教程",null,0,1778666547808]