[英]Define a function inside a namespace or qualified?
我在我們的代碼庫中看到了兩個 styles。 簡單的問題:更喜歡什么?
void
someNsName::someFunc( int a, int b )
{/*...*/}
void
someNsName::someOtherFunc( int c )
{/*...*/}
或者
namespace someNsName {
void
someFunc( int a, int b )
{/*...*/}
void
someOtherFunc( int c )
{/*...*/}
} // NS someNsName
我個人更喜歡后者,尤其是當您必須從someNsName
中獲得很多資格時。 但是還有更多的原因嗎?
兩者最大的區別是function不能先用限定名聲明。
// header
namespace foo {
void bar(int);
}
// implementation
namespace foo {
void bar(long) {
}
}
我在參數列表中犯了一個錯誤。 它聲明了一個重載,而不是我想要的 function。 問題只會在鏈接期間被發現。 這還不錯,但仍然需要一些時間才能真正彈出。 如果我把實現寫成
void foo::bar(long) {
}
編譯實現文件時會立即出現編譯器錯誤。 之前在foo
中聲明的沒有這樣的 function ,所以我無法定義它。
對於長名稱空間列表,人們總是可以這樣做
namespace impl = some::other::ns;
void impl::bar() {}
我認為這是兩種方法之間最重要的區別。 但同樣,styles 都有(不同的)優點,所以只要我們保持一致,任何一個都可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.