Lychee-rerank-mm惊艳效果:跨语言商品搜索案例展示
using 关键å—命å��空间的使用ä¸�注æ„�事项在å‰�文讲解命å��空间namespace时我们多次用到了using关键å———using namespace std;ã€�using MySpace::print;它就åƒ�命å��空间的“快æ�·æ–¹å¼�â€�能帮我们简化命å��ç©ºé—´ä¸æ ‡è¯†ç¬¦çš„调用摆脱ç¹�ç��çš„::作用域解æ��符。但很多Cåˆ�å¦è€…在使用using时很容易陷入误区è¦�么过度ä¾�èµ–using namespace std;引å�‘命å��冲çª�è¦�么误用usingçš„è¯æ³•导致编译报错甚至ä¸�清楚using除了适é…�命å��空间还有其他用途。本文将专门拆解using关键嗿 ¸å¿ƒè�šç„¦å®ƒåœ¨å‘½å��空间ä¸çš„使用场景å�Œæ—¶è¡¥å……其其他高频用法结å�ˆå‰�æ–‡namespace知识点ä»�è¯æ³•规则ã€�å®�战场景ã€�使用技巧到常è§�误区ä¸�é�¿å�‘指å�—é€�ä¸€è®²è§£å¸®ä½ å½»åº•æ�Œæ�¡using关键å—çš„æ£ç¡®ç”¨æ³•——既享å�—它带æ�¥çš„便æ�·å�ˆèƒ½è§„é�¿æ½œåœ¨é£�险写出简æ´�ã€�安全ã€�å�¯ç»´æŠ¤çš„C代ç �适é…�ä¸�å�Œè§„模的开å�‘场景。首先æ˜�ç¡®æ ¸å¿ƒå‰�æ��using是C的关键å—用途主è¦�分为两大类命å��空间相关使用最常用本文é‡�点和类å�‹åˆ«å��/继承相关使用补充拓展贴å�ˆå‰�æ–‡typedef知识点其ä¸å‘½å��空间相关用法是解决“命å��空间调用ç¹�ç��â€�çš„æ ¸å¿ƒæ‰‹æ®µã€‚ä¸€ã€�å›�顾铺å�«ä¸ºä»€ä¹ˆéœ€è¦�using关键å—在å‰�æ–‡å¦ä¹ 命å��空间时我们知é�“è¦�使用命å��空间ä¸çš„æ ‡è¯†ç¬¦æœ€è§„范的方å¼�是使用命å��空间å��ç§°::æ ‡è¯†ç¬¦å��ç§°è¿™ç§�æ–¹å¼�能æ˜�ç¡®æŒ‡å®šæ ‡è¯†ç¬¦æ‰€å±�的命å��空间彻底é�¿å…�命å��冲çª�但缺点也很æ˜�显——如æ�œéœ€è¦�频ç¹�调用æŸ�个命å��空间ä¸çš„æ ‡è¯†ç¬¦æ¯�次都è¦�写完整的命å��空间å‰�缀会让代ç �å�˜å¾—ç¹�ç��ã€�冗余。举个直观的例å�æ— usingæ—¶çš„ç¹�ç��写法#includeiostream#includestring// 自定义命å��空间å°�装用户相关æ“�作namespaceUserModule{voidshowName(string name){// æ— using调用std命å��ç©ºé—´çš„æ ‡è¯†ç¬¦æ¯�次都è¦�åŠ std::std::cout用户å��namestd::endl;}voidshowAge(intage){std::cout年龄agestd::endl;}}intmain(){// 频ç¹�调用UserModuleä¸çš„函数æ¯�次都è¦�åŠ UserModule::UserModule::showName(å¼ ä¸‰);UserModule::showAge(
;UserModule::showName(�四);UserModule::showAge(
;return0;}上述代ç �䏿— 论是调用std命å��空间的coutã€�endl还是UserModule命å��空间的showNameã€�showAgeæ¯�次都è¦�写完整的命å��空间å‰�缀代ç �显得很ç¹�ç��。而using关键å—就能完ç¾�解决这个问题——通过简å�•的声æ˜�就能简化调用方å¼�å�Œæ—¶å�¯ç�µæ´»æ�§åˆ¶â€œç®€åŒ–范围â€�兼顾便æ�·æ€§ä¸�安全性。二ã€�using 关键å—在命å��空间ä¸çš„æ ¸å¿ƒç”¨æ³•3ç§�å¿…æ�Œæ�¡using在命å��空间ä¸çš„ç”¨æ³•æ ¸å¿ƒæ˜¯â€œå¼•å…¥å‘½å��空间ä¸çš„æ ‡è¯†ç¬¦â€�æ ¹æ�®â€œå¼•入范围â€�çš„ä¸�å�Œåˆ†ä¸º3ç§�适é…�ä¸�å�Œçš„使用场景优先级ä»�“安全规范â€�到“便æ�·ç®€æ´�â€�递å‡�å»ºè®®æ ¹æ�®é¡¹ç›®è§„模ç�µæ´»é€‰æ‹©ã€‚用法1精准引入å�•ä¸ªæ ‡è¯†ç¬¦æ�¨è��兼顾安全ä¸�简æ´�è¯æ³•æ ¼å¼�using 命å��空间å��ç§°::æ ‡è¯†ç¬¦å��ç§°;æ ¸å¿ƒä½œç”¨ä»…å°†â€œæŒ‡å®šå‘½å��空间ä¸çš„æŸ�ä¸ªç‰¹å®šæ ‡è¯†ç¬¦â€�引入到当å‰�作用域å��ç»ä½¿ç”¨è¯¥æ ‡è¯†ç¬¦æ—¶æ— éœ€åŠ å‘½å��空间å‰�缀该命å��空间ä¸çš„å…¶ä»–æ ‡è¯†ç¬¦ä»�éœ€åŠ å‰�缀调用。适用场景需è¦�频ç¹�使用æŸ�个命å��空间ä¸çš„
ä¸ªæ ‡è¯†ç¬¦å…¶ä»–æ ‡è¯†ç¬¦ä¸�å¸¸ç”¨â€”â€”æ—¢ç®€åŒ–äº†å¸¸ç”¨æ ‡è¯†ç¬¦çš„è°ƒç”¨å�ˆé�¿å…�引入整个命å��空间引å�‘冲çª�是最æ�¨è��的用法尤其适å�ˆå¤§å�‹é¡¹ç›®ã€‚#includeiostream#includestring// 精准引入std命å��空间ä¸çš„coutã€�endlå¸¸ç”¨æ ‡è¯†ç¬¦usingstd::cout;usingstd::endl;// 精准引入std命å��空间ä¸çš„stringå¸¸ç”¨æ ‡è¯†ç¬¦usingstd::string;namespaceUserModule{voidshowName(string name){// æ— éœ€åŠ std::ç›´æ�¥ä½¿ç”¨coutã€�endlcout用户å��nameendl;}voidshowAge(intage){cout年龄ageendl;}}// 精准引入UserModuleä¸çš„showName频ç¹�调用usingUserModule::showName;intmain(){// æ— éœ€åŠ å‰�缀直æ�¥è°ƒç”¨showNameshowName(å¼ ä¸‰);showName(æ��å››);// 未精准引入showAgeä»�éœ€åŠ UserModule::å‰�ç¼€UserModule::showAge(
;// æ— éœ€åŠ å‰�缀直æ�¥ä½¿ç”¨stringstring msg调用æˆ�功;coutmsgendl;return0;}关键优势精准æ�§åˆ¶å¼•入范围ä¸�ä¼šå› å¼•å…¥è¿‡å¤šæ ‡è¯†ç¬¦å¼•å�‘冲çª�è°ƒè¯•æ—¶èƒ½æ¸…æ™°åŒºåˆ†æ ‡è¯†ç¬¦çš„æ�¥æº�代ç �å�¯è¯»æ€§æ›´å¼ºã€‚用法2引入整个命å��空间便æ�·é€‚å�ˆå°�å�‹ç¨‹åº�è¯æ³•æ ¼å¼�using namespace 命å��空间å��ç§°;æ ¸å¿ƒä½œç”¨å°†â€œæŒ‡å®šå‘½å��空间ä¸çš„æ‰€æœ‰æ ‡è¯†ç¬¦â€�全部引入到当å‰�作用域å��ç»ä½¿ç”¨è¯¥å‘½å��空间ä¸çš„ä»»æ„�æ ‡è¯†ç¬¦éƒ½æ— éœ€åŠ å‘½å��空间å‰�缀——便æ�·æ€§æ‹‰æ»¡ä½†å®‰å…¨æ€§æœ‰æ‰€ä¸‹é™�。适用场景å°�å�‹ç¨‹åº�ã€�测试代ç �ã€�è¯¾å ‚ç»ƒä¹ æˆ–è€…æŸ�个命å��空间ä¸çš„æ ‡è¯†ç¬¦è¢«é¢‘ç¹�ã€�大é‡�使用如std命å��ç©ºé—´æ— éœ€è€ƒè™‘å‘½å��冲çª�的场景。注æ„�å‰�文我们常用的using namespace std;就是这ç§�ç”¨æ³•â€”â€”å°†æ ‡å‡†åº“std命å��空间ä¸çš„æ‰€æœ‰æ ‡è¯†ç¬¦coutã€�endlã€�stringã€�vectorç‰å…¨éƒ¨å¼•入当å‰�作用域简化书写。但在大å�‹é¡¹ç›®ã€�多模å�—å��作ä¸ä¸�æ�¨è��全局使用容易引å�‘命å��冲çª�。#includeiostream#includestring// 引入整个std命å��空间所有stdä¸çš„æ ‡è¯†ç¬¦å�‡å�¯ç›´æ�¥ä½¿ç”¨usingnamespacestd;// 引入整个UserModule命å��空间所有UserModuleä¸çš„æ ‡è¯†ç¬¦å�‡å�¯ç›´æ�¥ä½¿ç”¨usingnamespaceUserModule;namespaceUserModule{voidshowName(string name){// æ— éœ€åŠ std::ç›´æ�¥ä½¿ç”¨coutã€�endlcout用户å��nameendl;}voidshowAge(intage){cout年龄ageendl;}}intmain(){// æ— éœ€åŠ ä»»ä½•å‰�缀直æ�¥è°ƒç”¨ä¸¤ä¸ªå‘½å��空间ä¸çš„æ ‡è¯†ç¬¦showName(å¼ ä¸‰);showAge(
;string msg调用æˆ�功;coutmsgendl;return0;}é£�险æ��示若当å‰�ä½œç”¨åŸŸä¸æœ‰ä¸�引入命å��空间ä¸å�Œå��çš„æ ‡è¯†ç¬¦ä¼šå¼•å�‘命å��冲çª�ç¼–è¯‘å™¨æ— æ³•åŒºåˆ†åˆ°åº•ä½¿ç”¨å“ªä¸€ä¸ªå¦‚è‡ªå®šä¹‰coutå�˜é‡�å†�引入std命å��空间就会冲çª�。用法3引入嵌套命å��空间适é…�多模å�—大å�‹é¡¹ç›®è¯æ³•æ ¼å¼�using namespace 外层命å��空间::内层命å��空间;æ ¸å¿ƒä½œç”¨é’ˆå¯¹åµŒå¥—å‘½å��空间仅引入“内层命å��空间ä¸çš„æ‰€æœ‰æ ‡è¯†ç¬¦â€�外层命å��空间ä¸çš„å…¶ä»–æ ‡è¯†ç¬¦ä¸�å�—å½±å“�å��ç»ä½¿ç”¨å†…层命å��空间ä¸çš„æ ‡è¯†ç¬¦æ— éœ€åŠ å¤–å±‚å†…å±‚å‰�缀简化嵌套命å��空间的调用。适用场景大å�‹é¡¹ç›®ã€�多模å�—å¼€å�‘使用嵌套命å��空间划分模å�—如å‰�文的项目模å�—嵌套需è¦�频ç¹�调用æŸ�个内层命å��空间ä¸çš„内容。#includeiostreamusingnamespacestd;// 外层命å��空间项目å��ç§°namespaceMyProject{// 内层命å��空间用户模å�—namespaceUserModule{voidshowName(string name){cout用户模å�—nameendl;}}// 内层命å��空间日志模å�—namespaceLogModule{voidshowLog(string msg){cout日志模å�—msgendl;}}}// 引入嵌套命å��空间MyProject::UserModule仅简化该内层命å��空间的调用usingnamespaceMyProject::UserModule;intmain(){// æ— éœ€åŠ MyProject::UserModule::å‰�缀直æ�¥è°ƒç”¨showName(å¼ ä¸‰);// 未引入LogModuleä»�éœ€åŠ å®Œæ•´å‰�ç¼€MyProject::LogModule::showLog(程åº�å�¯åЍæˆ�功);return0;}补充技巧也å�¯ä»¥ç»“å�ˆâ€œç²¾å‡†å¼•å…¥â€�å�ªå¼•入嵌套命å��空间ä¸çš„å�•ä¸ªæ ‡è¯†ç¬¦å¦‚using MyProject::UserModule::showName;è¿›ä¸€æ¥æ��å�‡å®‰å…¨æ€§ã€‚三ã€�补充拓展using 关键å—的其他2ç§�常用用途除了适é…�命å��空间using关键å—还有两个高频用途分别对应“类å�‹åˆ«å��â€�和“类继承â€�å…¶ä¸ç±»å�‹åˆ«å��用法å�¯æ›¿ä»£å‰�æ–‡å¦ä¹ çš„typedef更简æ´�ã€�æ›´ç�µæ´»å»ºè®®é‡�点æ�Œæ�¡ã€‚拓展1using 定义类å�‹åˆ«å��替代typedefæ�¨è��å‰�文我们å¦ä¹ 了typedef关键å—用äº�为已有的类å�‹åˆ›å»ºåˆ«å��如typedef int MyInt;而C11引入了using的新用法——用using定义类å�‹åˆ«å��è¯æ³•æ›´ç›´è§‚ã€�æ›´ç�µæ´»å°¤å…¶é€‚å�ˆå¤�æ�‚ç±»å�‹å¦‚函数指针ã€�模æ�¿ç±»å�‹åŠŸèƒ½ä¸�typedef完全ç‰ä»·ã€‚è¯æ³•æ ¼å¼�using 别å�� å�Ÿç±»å�‹;对比typedef优势æ˜�æ˜¾è¯æ³•顺åº�更直观先写别å��å†�写å�Ÿç±»å�‹æ”¯æŒ�模æ�¿åˆ«å��å�¯è¯»æ€§æ›´å¼ºã€‚#includeiostream#includevectorusingnamespacestd;//
基础类�别�对比typedeftypedefintMyInt1;// typedef写法�类�在�别�在�usingMyInt2int;// using写法别�在��类�在�更直观//
��类�别�函数指针using更简�typedefint(*FuncPtr
(int,int);// typedef定义函数指针别�usingFuncPtr2int(*)(int,int);// using定义函数指针别�//
模�类�别�using支�typedef�支�templatetypenameTusingVecvectorT;// 定义模�别�Vec替代vectorTintadd(inta,intb){returnab;}intmain(){MyInt2 a10;FuncPtr2 ptradd;Vecintv{1,2,3};// 简化vectorint为Vecintcoutaendl;// 输出10coutptr(5,
endl;// 输出8for(autonum:v)coutnum ;// 输出1 2 3return0;}拓展2using 继承类ä¸çš„æˆ�员类继承相关在类继承ä¸using关键å—å�¯ç”¨äº�“引入父类ä¸çš„æˆ�员â€�解决“å�ç±»æ— æ³•ç›´æ�¥è®¿é—®çˆ¶ç±»ç§�有æˆ�员或éš�è—�æˆ�员â€�的问题将父类的æˆ�员引入到å�ç±»çš„ä½œç”¨åŸŸä¸æ–¹ä¾¿å�类直æ�¥è°ƒç”¨ã€‚è¯æ³•æ ¼å¼�å�ç±»ä¸using 父类å��ç§°::父类æˆ�员;#includeiostream#includestringusingnamespacestd;// 父类PersonclassPerson{protected:string name;intage;public:voidshowInfo(){coutå§“å��name年龄ageendl;}};// å�ç±»Student继承PersonclassStudent:publicPerson{public:// 使用using引入父类的protectedæˆ�员nameã€�ageå�ç±»å�¯ç›´æ�¥è®¿é—®usingPerson::name;usingPerson::age;// 使用using引入父类的publicæˆ�员showInfoå�ç±»å�¯ç›´æ�¥è°ƒç”¨usingPerson::showInfo;voidsetInfo(string n,inta){// ç›´æ�¥è®¿é—®çˆ¶ç±»çš„nameã€�ageæ— éœ€åŠ Person::å‰�ç¼€namen;agea;}};intmain(){Student s;s.setInfo(å¼ ä¸‰,
;s.showInfo();// ç›´æ�¥è°ƒç”¨çˆ¶ç±»çš„showInfo方法return0;}å››ã€�using 关键å—使用注æ„�事项é�¿å�‘æ ¸å¿ƒå¿…çœ‹using关键å—虽便æ�·ä½†ä½¿ç”¨ä¸�当很容易引å�‘命å��冲çª�ã€�编译报错ç‰é—®é¢˜ç»“å�ˆå‰�文知识点和å®�战场景总结6ä¸ªæ ¸å¿ƒæ³¨æ„�äº‹é¡¹å¸®ä½ è§„é�¿æ‰€æœ‰å¸¸è§�å�‘。注æ„�事项1é�¿å…�全局引入std命å��空间大å�‹é¡¹ç›®è¿™æ˜¯æœ€å¸¸è§�的误区——很多åˆ�å¦è€…ä¹ æƒ¯åœ¨ä»£ç �开头写using namespace std;虽然便æ�·ä½†åœ¨å¤§å�‹é¡¹ç›®ã€�多模å�—å��作ä¸å…¨å±€å¼•å…¥stdä¼šå¯¼è‡´â€œæ ‡å‡†åº“æ ‡è¯†ç¬¦ä¸�è‡ªå®šä¹‰æ ‡è¯†ç¬¦å†²çª�â€�如自定义stringã€�vector类。æ�¨è��替代方案精准引入需è¦�çš„æ ‡è¯†ç¬¦å¦‚using std::cout; using std::endl;仅在局部作用域引入std如函数内部é�¿å…�全局污染ä¸�使用usingç›´æ�¥ç”¨std::æ ‡è¯†ç¬¦æœ€è§„èŒƒæ— é£�险。#includeiostream#includestring// ä¸�全局引入std精准引入需è¦�çš„æ ‡è¯†ç¬¦æ�¨è��usingstd::cout;usingstd::endl;// 自定义stringç±»ä¸�会ä¸�std::string冲çª�classstring{public:voidshow(){cout自定义stringç±»endl;}};intmain(){string myStr;myStr.show();std::string stdStræ ‡å‡†åº“string;// 未引入std::stringéœ€åŠ å‰�ç¼€coutstdStrendl;return0;}注æ„�事项2using å¼•å…¥çš„æ ‡è¯†ç¬¦ä¼šè¦†ç›–å½“å‰�作用域的å�Œå��æ ‡è¯†ç¬¦è‹¥å½“å‰�作用域ä¸å·²ç»�定义了ä¸�usingå¼•å…¥çš„æ ‡è¯†ç¬¦å�Œå��çš„å�˜é‡�ã€�函数或类usingå¼•å…¥çš„æ ‡è¯†ç¬¦ä¼šâ€œè¦†ç›–â€�当å‰�作用域的å�Œå��æ ‡è¯†ç¬¦å�—ä¸�会——会直æ�¥å¼•å�‘命å��冲çª�ç¼–è¯‘å™¨æŠ¥é”™æ— æ³•åŒºåˆ†åˆ°åº•ä½¿ç”¨å“ªä¸€ä¸ªã€‚#includeiostreamusingnamespacestd;// 当å‰�作用域定义print函数voidprint(string msg){cout自定义printmsgendl;}namespaceMySpace{// MySpaceä¸å®šä¹‰å�Œå��print函数voidprint(string msg){coutMySpace::printmsgendl;}}// 引入MySpaceä¸çš„printä¸�当å‰�作用域的printå�Œå��引å�‘冲çª�// using MySpace::print; // 编译报错printé‡�定义intmain(){print(Hello);return0;}注æ„�事项3using ä¸�能引入ä¸�å˜åœ¨çš„æ ‡è¯†ç¬¦usingå¼•å…¥çš„æ ‡è¯†ç¬¦å¿…é¡»æ˜¯å¯¹åº”å‘½å��空间ä¸â€œå·²å®šä¹‰â€�çš„è‹¥æ ‡è¯†ç¬¦ä¸�å˜åœ¨å¦‚拼写错误ã€�命å��空间错误会直æ�¥ç¼–译报错。#includeiostreamusingnamespacestd;namespaceMySpace{voidprint(string msg){coutmsgendl;}}// 错误MySpace䏿²¡æœ‰printMsg函数引入ä¸�å˜åœ¨çš„æ ‡è¯†ç¬¦// using MySpace::printMsg;intmain(){return0;}注æ„�事项4using 的作用域有é™�仅在当å‰�作用域有效using声æ˜�的作用域é�µå¾ªC作用域规则——若using声æ˜�在全局作用域全局有效若在函数ã€�类内部声æ˜�ä»…åœ¨è¯¥å±€éƒ¨ä½œç”¨åŸŸæœ‰æ•ˆå‡ºäº†ä½œç”¨åŸŸå°±å¤±æ•ˆæ— æ³•å†�ç›´æ�¥ä½¿ç”¨å¼•å…¥çš„æ ‡è¯†ç¬¦ã€‚#includeiostreamusingnamespacestd;namespaceMySpace{voidprint(string msg){coutmsgendl;}}intmain(){// using声æ˜�在main函数内部局部作用域usingMySpace::print;print(在mainä¸å�¯ç›´æ�¥è°ƒç”¨);// 有效return0;}voidtest(){// 出了main作用域using声æ˜�å¤±æ•ˆæ— æ³•ç›´æ�¥è°ƒç”¨// print(在test䏿— 法直æ�¥è°ƒç”¨); // 编译报错MySpace::print(éœ€åŠ å‰�缀调用);// 有效}注æ„�事项5using ä¸�能替代命å��空间仅能简化调用很多åˆ�å¦è€…误以为“用了usingå°±ä¸�需è¦�定义命å��空间了â€�——这是错误的。usingçš„æ ¸å¿ƒä½œç”¨æ˜¯â€œç®€åŒ–å‘½å��ç©ºé—´ä¸æ ‡è¯†ç¬¦çš„调用â€�而命å��ç©ºé—´çš„æ ¸å¿ƒä½œç”¨æ˜¯â€œåˆ’åˆ†ä½œç”¨åŸŸã€�解决命å��冲çª�â€�二者是“互补关系â€�ä¸�是“替代关系â€�。必须先定义命å��ç©ºé—´å°†æ ‡è¯†ç¬¦å°�装起æ�¥æ‰�能用using引入没有命å��空间using就失å�»äº†ä½œç”¨ã€‚注æ„�事项6using 定义类å�‹åˆ«å��æ—¶ä¸�typedef的区别细节虽然usingå’Œtypedef都能定义类å�‹åˆ«å��功能ç‰ä»·ä½†æœ‰ä¸¤ä¸ªç»†èŠ‚åŒºåˆ«éœ€æ³¨æ„�è¯æ³•顺åº�typedef是“å�Ÿç±»å�‹åœ¨å‰�别å��在å��â€�using是“别å��在å‰�å�Ÿç±»å�‹åœ¨å��â€�更直观模æ�¿é€‚é…�using支æŒ�模æ�¿ç±»å�‹åˆ«å��typedefä¸�支æŒ�如å‰�文的template typename T using Vec vectorT。æ�¨è��纯C项目C11å�Šä»¥ä¸Šä¼˜å…ˆä½¿ç”¨using定义类å�‹åˆ«å��å�¯è¯»æ€§å’Œç�µæ´»æ€§æ›´å¼ºè‹¥éœ€å…¼å®¹Cè¯è¨€ä½¿ç”¨typedef。五ã€�å®�战场景using ä¸�命å��空间的å�ˆç�†æ�é…�æ�¨è��方案结å�ˆä¸�å�Œé¡¹ç›®è§„模给出usingä¸�命å��空间的æ�é…�方案å�¯ç›´æ�¥å¥—用兼顾便æ�·æ€§ä¸�安全性
å°�å�‹ç¨‹åº�/测试代ç �å¦‚ç»ƒä¹ ã€�demo需求简æ´�é«˜æ•ˆæ— éœ€è€ƒè™‘å¤�æ�‚冲çª�。æ�é…�方案全局引入std命å��空间简化书写。#includeiostream#includestringusingnamespacestd;// 全局引入std便æ�·ä¹¦å†™intmain(){string msgå°�å�‹ç¨‹åº�测试;coutmsgendl;return0;}
ä¸å�‹é¡¹ç›®/å�•一模å�—需求兼顾便æ�·ä¸�安全é�¿å…�局部冲çª�。æ�é…�方案精准引入stdä¸å¸¸ç”¨çš„æ ‡è¯†ç¬¦è‡ªå®šä¹‰å‘½å��空间全局引入模å�—å†…éƒ¨æ— å�Œå��冲çª�。#includeiostream#includestring// 精准引入stdä¸å¸¸ç”¨æ ‡è¯†ç¬¦usingstd::cout;usingstd::endl;usingstd::string;// 自定义模å�—命å��空间全局引入模å�—å†…éƒ¨æ— å�Œå��冲çª�namespaceUserModule{voidshowName(string name){cout用户å��nameendl;}}usingnamespaceUserModule;intmain(){showName(å¼ ä¸‰);string msgä¸å�‹é¡¹ç›®æµ‹è¯•;coutmsgendl;return0;}
大å�‹é¡¹ç›®/多模å�—å��作需求安全规范彻底é�¿å…�命å��冲çª�便äº�维护。æ�é…�方案ä¸�全局引入任何命å��空间è¦�么精准引入å�•ä¸ªæ ‡è¯†ç¬¦è¦�么使用命å��空间::æ ‡è¯†ç¬¦çš„æ–¹å¼�调用。#includeiostream#includestring// ä¸�全局引入任何命å��空间精准引入需è¦�çš„æ ‡è¯†ç¬¦usingstd::cout;usingstd::endl;// 模å�—1命å��空间namespaceUserModule{voidshowName(std::string name){// 未引入std::stringåŠ å‰�ç¼€cout用户模å�—nameendl;}}// 模å�—2命å��空间namespaceLogModule{voidshowLog(std::string msg){cout日志模å�—msgendl;}}intmain(){// 精准引入UserModuleä¸çš„showName简化调用usingUserModule::showName;showName(å¼ ä¸‰);// LogModuleä¸çš„showLogä¸�å¸¸ç”¨åŠ å‰�缀调用LogModule::showLog(程åº�å�¯åЍæˆ�功);return0;}å…ã€�总结using关键嗿˜¯Cä¸é��常ç�µæ´»ã€�å®�ç”¨çš„å…³é”®å—æ ¸å¿ƒç”¨é€”分为两大类命å��空间相关使用最常用和类å�‹åˆ«å��/继承相关使用补充拓展。其ä¸å‘½å��空间相关用法是本文的é‡�点通过“精准引入å�•ä¸ªæ ‡è¯†ç¬¦â€�“引入整个命å��空间â€�“引入嵌套命å��空间â€�三ç§�æ–¹å¼�能有效简化命å��ç©ºé—´ä¸æ ‡è¯†ç¬¦çš„调用摆脱ç¹�ç��çš„::å‰�缀兼顾便æ�·æ€§ä¸�安全性。结å�ˆå‰�æ–‡å¦ä¹ 的命å��空间ã€�å®�定义ã€�const常é‡�ã€�typedefç‰çŸ¥è¯†ç‚¹using关键å—èƒ½è¿›ä¸€æ¥æ��å�‡ä»£ç �的简æ´�性和å�¯ç»´æŠ¤æ€§ç”¨using简化命å��空间调用用const定义类å�‹å®‰å…¨çš„常é‡�用命å��空间解决命å��冲çª�用using替代typedef定义更ç�µæ´»çš„ç±»å�‹åˆ«å��å½¢æˆ�一套完整的代ç �规范。
PH破解版破解免费安卓版在线-PH破解版破解免费安卓版在线应用