第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c+標頭中的“使用命名空間”

c+標頭中的“使用命名空間”

C++
SMILET 2019-06-20 15:35:24
c+標頭中的“使用命名空間”在我們所有的c+課程中,所有的老師總是把using namespace std;就在#include在他們的.h檔案。這在我看來是很危險的,因為通過在另一個程序中包含那個頭,我將把名稱空間導(dǎo)入到我的程序中,也許沒有意識到、有意或者想要它(頭包含可能是非常深嵌套的)。所以我的問題是雙重的:我說的對嗎?using namespace不應(yīng)在頭文件中使用,和/或是否有某種方法可以撤消它,例如://header.husing namespace std {...}還有一個類似的問題:頭文件是否應(yīng)該#include它對應(yīng)的所有標頭.cpp文件需要的文件,只需要那些標頭定義所需的文件,并且讓.cpp檔案#include其余的,或者沒有,并聲明它所需要的一切extern?這個問題背后的理由和上面的一樣:我不想在包括.h檔案。而且,如果我是對的,這是一個常見的錯誤嗎?我的意思是在現(xiàn)實世界的編程和“真實的”項目中。謝謝。
查看完整描述

3 回答

?
叮當(dāng)貓咪

TA貢獻1776條經(jīng)驗 獲得超12個贊

你絕對不應(yīng)該用using namespace在Header中,由于您所說的原因,它可以意外地更改包含該標頭的任何其他文件中的代碼的含義。沒有辦法撤銷using namespace這也是它如此危險的另一個原因。我通常只是用grep或者是為了確保using namespace不是在標題中被調(diào)用,而不是嘗試任何更復(fù)雜的東西??赡莒o態(tài)代碼檢查器也會標記這一點。

標頭應(yīng)該只包含它需要編譯的頭。執(zhí)行此操作的一個簡單方法是始終將每個源文件的自己的頭作為第一件事,放在任何其他頭之前。如果頭文件不自載,源文件將無法編譯。在某些情況下,例如引用庫中的實現(xiàn)細節(jié)類,可以使用前向聲明而不是#include因為您完全控制了這種前向聲明類的定義。

我不確定我是否會說它是普通的,但它肯定會偶爾出現(xiàn),通常是由新程序員編寫的,他們不知道這會帶來什么負面后果。通常,只要一點關(guān)于風(fēng)險的教育就能解決任何問題,因為解決起來相對簡單。


查看完整回答
反對 回復(fù) 2019-06-20
?
千萬里不及你

TA貢獻1784條經(jīng)驗 獲得超9個贊

當(dāng)在標題中包含標題時,您需要小心。在大型項目中,它可以創(chuàng)建一個非常復(fù)雜的依賴鏈,觸發(fā)比實際需要的更大/更長的重建。檢查這篇文章它的后續(xù)行動更多地了解良好的物理結(jié)構(gòu)在C+項目中的重要性。

只有在絕對需要時(無論何時需要類的完整定義),才應(yīng)該在標頭中包含頭,并在可能的地方使用前向聲明(當(dāng)需要類是指針或引用時)。

至于名稱空間,我傾向于在頭文件中使用顯式命名空間范圍,并且只將using namespace在我的CPP文件里。


查看完整回答
反對 回復(fù) 2019-06-20
  • 3 回答
  • 0 關(guān)注
  • 279 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號