金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網(wǎng)游開發(fā)(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊
公告照片
搜索
積分與排名
積分 - 659027
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統(tǒng)C++網(wǎng)絡庫
asio 成為C++首選網(wǎng)絡庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發(fā)送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11054)
2.?SVN中邪惡的replace(10972)
3.?VS2005編譯libevent(10429)
4.?混音算法的學習與研究(10230)
5.?C調(diào)用lua腳本的效率測試(9019)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優(yōu)于指針(17)
5.?ACE與ASIO之間關于Socket編程的比較(16)
用結(jié)構(gòu)體來構(gòu)造封閉的名字空間
摘自《Extended STL》中譯
C++關鍵字namespace提供的名字空間是開放的:你可以在任何時候擴展其中的內(nèi)容。只要另外聲明一個同名的名字空間即可。但如此一來事態(tài)的發(fā)展可能完全出乎原作者的預料。例如,你可能寫下這樣的代碼,指望用戶對其中的名字空間敬若神明。
// OstensiblyDefinitiveVersion.hpp
namespace covenant
{
int func(std::string const& s); // Specific version for std::string
template <typename S>
int func(S const& s); // General version for other types
} // namespace covenant
但是用戶可以改變covenant名字空間并帶來潛在的破壞性后果,而我們對此卻束手無策。
// CavalierManipulations.hpp
namespace covenant
{
int func(std::exception const& x);
} // namespace covenant
現(xiàn)在函數(shù)模板的適用范圍縮小了,以前那些完全依賴舊版名字空間的代碼會受到影響,或許它們的行為已經(jīng)發(fā)生了變化。一般而言這不是什么好事,也說明了為什么C++標準只允許在一種情況下擴展std名字空間,即把std名字空間業(yè)已存在的模板完全特化后再加入進去。
為得到真正封閉的名字空間,你需要使用class/union/struct,就像這樣:
// EnforceablyDefinitiveVersion.hpp
struct covenant
{
private:
covenant(); // Prevent construction: it is a "namespace" after all
public:
static int func(std::string const& s);
template <typename S>
static int func(S const& s);
}; // "namespace" covenant
上 面這樣的"名字空間"和真正的名字空間相比,還受到一些額外的限制。例如它無法定義任何非整數(shù)類型的成員常量。同時也不能聲明成員名字空間,而只能用內(nèi)嵌 的class/struct/union來模擬。但除了具備封閉性外,還有一些優(yōu)點也是名字空間不具備的,例如它允許定義私有成員以及友元,由此將其成員 的訪問權(quán)限限定在一個已知的上下文中。
提示
用結(jié)構(gòu)體來構(gòu)造封閉的名字空間(當然得定義私有的構(gòu)造函數(shù))。
(轉(zhuǎn)載請注明來源于金慶的專欄)
posted on 2008-05-19 16:44
金慶
閱讀(1352)
評論(0)
編輯
收藏
引用
所屬分類:
1. C/C++
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關文章:
How are dtLinks created in NavMesh
C++ parameter passing rules
Naming Conventions for Accessors
Visual Studio 2019 Compiler Hangs
Fbx File Format Identifier
查找內(nèi)存錯誤
std::thread 中的異常會丟失調(diào)用棧
用賦值代替 protobuf CopyFrom()
vs2017 linux 編譯輸出改成 vs 格式
為 LiteIDE 添加選中標記
網(wǎng)站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
久久久WWW成人免费精品
|
伊人久久久AV老熟妇色
|
久久久中文字幕日本
|
思思久久99热只有频精品66
|
少妇高潮惨叫久久久久久
|
国产精品女同一区二区久久
|
丁香五月综合久久激情
|
亚洲人成精品久久久久
|
久久久久久一区国产精品
|
色婷婷综合久久久久中文
|
青青热久久国产久精品
|
色综合久久最新中文字幕
|
久久香综合精品久久伊人
|
亚洲国产成人久久综合一
|
人妻无码中文久久久久专区
|
久久久国产亚洲精品
|
国产亚州精品女人久久久久久
|
色偷偷偷久久伊人大杳蕉
|
综合久久一区二区三区
|
欧美亚洲国产精品久久蜜芽
|
人妻无码αv中文字幕久久
|
天天综合久久久网
|
久久久久久久人妻无码中文字幕爆
|
a级毛片无码兔费真人久久
|
国内精品九九久久久精品
|
狠狠色噜噜色狠狠狠综合久久
|
AAA级久久久精品无码区
|
一级做a爰片久久毛片人呢
|
久久国产精品-国产精品
|
久久国产精品无码一区二区三区
|
久久久久高潮综合影院
|
尹人香蕉久久99天天拍
|
久久久国产亚洲精品
|
精品人妻伦九区久久AAA片69
|
狠狠色噜噜色狠狠狠综合久久
|
久久AV无码精品人妻糸列
|
色狠狠久久AV五月综合
|
97超级碰碰碰久久久久
|
精品一区二区久久
|
久久99精品久久久久久噜噜
|
香蕉久久AⅤ一区二区三区
|