[{"data":1,"prerenderedAt":612},["ShallowReactive",2],{"wiki-page-/wiki/2023-10-05-cplusplus-jiao-xue/ch5-c-ming-ming-kong-jian":3,"wiki-doc-items-/wiki/2023-10-05-cplusplus-jiao-xue/ch5-c-ming-ming-kong-jian":552},{"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,"layout":546,"meta":547,"navigation":133,"path":548,"seo":549,"stem":550,"wikiDepth":46,"__hash__":551},"content/wiki/2023-10-05-Cplusplus教学/ch5-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   // 代码声明\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","   // 代码声明\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;  // 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},"  // 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// 第一个命名空间\nnamespace first_space{\n   void func(){\n      cout \u003C\u003C \"Inside first_space\" \u003C\u003C endl;\n   }\n}\n// 第二个命名空间\nnamespace second_space{\n   void func(){\n      cout \u003C\u003C \"Inside second_space\" \u003C\u003C endl;\n   }\n}\n\n// 第三个命名空间\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;    //(与25行代码建议不能共存，因为都导入了func()函数)，（这种方法更好更推荐）\n\nint main ()\n{\n\n   // 调用第一个命名空间中的函数\n   func();\n   // 调用第二个命名空间中的函数   \n   func();         //(与32行代码不能共存)\n   //调用第三个命名空间中的函数\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},"// 第一个命名空间\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},"// 第二个命名空间\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},"// 第三个命名空间\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},"    //(与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},"   // 调用第一个命名空间中的函数\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},"   // 调用第二个命名空间中的函数   \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},"         //(与32行代码不能共存)\n",[43,391,393],{"class":45,"line":392},35,[43,394,395],{"class":63},"   //调用第三个命名空间中的函数\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   // 代码声明\n   namespace namespace_name2 {\n      // 代码声明\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},"      // 代码声明\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},"// 访问 namespace_name2 中的成员\nusing namespace namespace_name1::namespace_name2;\n\n// 访问 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},"// 访问 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},"// 访问 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","/wiki/2023-10-05-cplusplus-jiao-xue","Cplusplus教学","md",false,null,{},"/wiki/2023-10-05-cplusplus-jiao-xue/ch5-c-ming-ming-kong-jian",{"title":5,"description":12},"wiki/2023-10-05-Cplusplus教学/ch5-C++命名空间","fWPBneCy4X7hPsSL4qTWO0ylebFROWmNxPy2Vle767E",[553,559,565,571,577,583,584,590,596,602,608],{"path":554,"stem":555,"title":556,"date":540,"chapter":557,"chapterSort":558,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"/wiki/2023-10-05-cplusplus-jiao-xue/ch1-qian-yan","wiki/2023-10-05-Cplusplus教学/ch1-前言","前言","1",1000000,{"path":560,"stem":561,"title":562,"date":540,"chapter":563,"chapterSort":564,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"/wiki/2023-10-05-cplusplus-jiao-xue/ch10-xian-dai-c","wiki/2023-10-05-Cplusplus教学/ch10-现代C++","现代C++","10",10000000,{"path":566,"stem":567,"title":568,"date":540,"chapter":569,"chapterSort":570,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"/wiki/2023-10-05-cplusplus-jiao-xue/ch2-cheng-xu-yun-xing-yu-bian-liang-sheng-ming-zhou-qi","wiki/2023-10-05-Cplusplus教学/ch2-程序运行与变量生命周期","程序运行与变量生命周期","2",2000000,{"path":572,"stem":573,"title":574,"date":540,"chapter":575,"chapterSort":576,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"/wiki/2023-10-05-cplusplus-jiao-xue/ch3-tou-wen-jian","wiki/2023-10-05-Cplusplus教学/ch3-头文件","头文件","3",3000000,{"path":578,"stem":579,"title":580,"date":540,"chapter":581,"chapterSort":582,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"/wiki/2023-10-05-cplusplus-jiao-xue/ch4-c-yu-yan-he-c-de-i-o","wiki/2023-10-05-Cplusplus教学/ch4-C语言和C++的I_O","C语言 和 C++ 的I/O","4",4000000,{"path":548,"stem":550,"title":5,"date":540,"chapter":538,"chapterSort":539,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},{"path":585,"stem":586,"title":587,"date":540,"chapter":588,"chapterSort":589,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"/wiki/2023-10-05-cplusplus-jiao-xue/ch6-lian-he-ti-gong-yong-ti","wiki/2023-10-05-Cplusplus教学/ch6-联合体（共用体）","联合体（共用体）","6",6000000,{"path":591,"stem":592,"title":593,"date":540,"chapter":594,"chapterSort":595,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"/wiki/2023-10-05-cplusplus-jiao-xue/ch7-typedef","wiki/2023-10-05-Cplusplus教学/ch7-typedef","typedef","7",7000000,{"path":597,"stem":598,"title":599,"date":540,"chapter":600,"chapterSort":601,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"/wiki/2023-10-05-cplusplus-jiao-xue/ch8-jie-gou-ti","wiki/2023-10-05-Cplusplus教学/ch8-结构体","结构体","8",8000000,{"path":603,"stem":604,"title":605,"date":540,"chapter":606,"chapterSort":607,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":545},"/wiki/2023-10-05-cplusplus-jiao-xue/ch9-shu-ju-de-cun-fang","wiki/2023-10-05-Cplusplus教学/ch9-数据的存放","数据的存放","9",9000000,{"path":542,"stem":609,"title":610,"date":540,"chapter":546,"chapterSort":611,"docKey":541,"docRoot":542,"docTitle":543,"isWikiDoc":133,"isWikiIndex":133},"wiki/2023-10-05-Cplusplus教学/index","C/C++教程",0,1778560331333]