最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C++自制心得——開(kāi)篇(命名空間篇)

2023-08-10 22:54 作者:這年頭起名可真不容易  | 我要投稿

前言:?

本心得只適合給那些擁有C語(yǔ)言基礎(chǔ) (系統(tǒng)的自主學(xué)習(xí)過(guò)C語(yǔ)言(以找工作為目標(biāo),學(xué)校老師教的一律視作沒(méi)學(xué)),了解一些底層機(jī)制,用C實(shí)現(xiàn)過(guò)一些基本數(shù)據(jù)結(jié)構(gòu)?(順序表、鏈表、隊(duì)列與棧、初等二叉樹(shù)、十大經(jīng)典排序等) ) 的人觀看。如果你不滿足上述條件就不要在這里浪費(fèi)時(shí)間了。

本人在寫(xiě)專欄上的技術(shù)力并不好,如果你覺(jué)得這篇文章在排版上有需要改進(jìn)的地方可以在評(píng)論區(qū)留言并附上具體操作流程。

本人目前是大二在讀生,目前剛開(kāi)始學(xué)習(xí)C++相關(guān)知識(shí),如果有大佬發(fā)現(xiàn)哪里介紹的不對(duì)或者有疏漏歡迎在評(píng)論區(qū)留言,我盡量在發(fā)現(xiàn)的第一時(shí)間糾正。

好,廢話不多講,我們進(jìn)入正題。

眾所周知,C++是C的豪華升級(jí)版,它在C語(yǔ)言的基礎(chǔ)上填補(bǔ)了一系列漏洞,并增加了很多新機(jī)制,我們先介紹一些給C語(yǔ)言打的補(bǔ)丁。

正文

我們先給一段代碼

顯然,現(xiàn)在這段代碼可以正常使用,沒(méi)有問(wèn)題。but......看看下面這個(gè)。

請(qǐng)看劃紅線的地方,rand重定義,以前定義為函數(shù)。為什么?因?yàn)槲覀兌喟艘粋€(gè)名為stdlib.h的頭文件,其中定義了一個(gè)名為rand的函數(shù),而我們也定義了一個(gè)名為rand的int全局變量,名字重了。

我知道你想說(shuō)什么,正常人不會(huì)定義一個(gè)名為rand的變量,自然也不會(huì)出現(xiàn)這種低級(jí)錯(cuò)誤。但隨著你包含的官方庫(kù)文件和自定義庫(kù)文件數(shù)量的增加,出現(xiàn)這類問(wèn)題的幾率也會(huì)變大。更糟的是,C語(yǔ)言本身不提供此類問(wèn)題的解決方案。官方庫(kù)文件還可以避著走,你同事寫(xiě)的庫(kù)文件怎么辦,難不成和他在線下激情開(kāi)撕,誰(shuí)輸了誰(shuí)改名。嗯,看來(lái)程序員也要練Chinese kungfu,人人都要練成能手撕鬼子的超人ε=(′ο`*)))。

為了節(jié)省廣大程序員的醫(yī)藥費(fèi),C++加入了命名空間,快說(shuō)謝謝。

就像這樣,現(xiàn)在惱人的重定義問(wèn)題終于被解決了......至少是部分,因?yàn)檫€有一些小細(xì)節(jié)。不過(guò)在此之前我們先講講命名空間的基本用法。

基本上什么東西都能放進(jìn)去,很自由
用法圖
輸出

可以看到,命名空間的基本用法還是很容易理解的,創(chuàng)建一個(gè)域,把代碼放進(jìn)去,用的時(shí)候只需在變量前+命名空間名和::就行。

(tips: 如果沒(méi)在二叉樹(shù)節(jié)點(diǎn)的定義用typedef偷雞,那main函數(shù)里的代碼應(yīng)該寫(xiě)成:? struct test:: BinaryNode Node)

命名空間的展開(kāi)

命名空間相當(dāng)于一個(gè)權(quán)限鎖,編譯器在沒(méi)有授權(quán)的情況下(無(wú)::修飾)只會(huì)去公共空間尋找定義,有了授權(quán)它就只會(huì)去命名空間尋找定義(找不到就報(bào)錯(cuò)),那有沒(méi)有一次性解鎖的方式?老是寫(xiě)::太煩了。命名空間的展開(kāi)可以幫助解決這個(gè)問(wèn)題。


這就是一個(gè)命名空間的全展開(kāi),很簡(jiǎn)單用一下using關(guān)鍵字就可以了。

惱人的重定義問(wèn)題終于被解決了......至少是部分

實(shí)際上命名空間的展開(kāi)是一種很危險(xiǎn)的行為,因?yàn)殚_(kāi)放權(quán)限后命名空間里的內(nèi)容就直接進(jìn)入公共空間了,如果此時(shí)你的公共空間里有重復(fù)定義,那重定義問(wèn)題就叕叒雙又來(lái)了。

那還有別的方法嗎?我就不想寫(xiě)六次::。那就試試半展開(kāi)。

完美,代碼看著舒服多了。(tips: 其實(shí)只用在rand的前面加上::就能解決問(wèn)題,沒(méi)必要半展開(kāi))?

C++自制心得——開(kāi)篇(命名空間篇)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
黑水县| 甘谷县| 青海省| 新蔡县| 乐昌市| 土默特左旗| 札达县| 淮阳县| 诸城市| 大田县| 天津市| 建始县| 都匀市| 红河县| 双辽市| 石狮市| 闵行区| 老河口市| 元江| 庆城县| 通化县| 舒兰市| 萝北县| 保山市| 阜新| 大埔县| 花莲市| 兰溪市| 个旧市| 贞丰县| 秭归县| 灵丘县| 马龙县| 富源县| 乌鲁木齐县| 永年县| 左权县| 从江县| 岳阳县| 洛隆县| 高淳县|