金慶的專欄
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 © 金慶
国产精品成人99久久久久91gav
|
区久久AAA片69亚洲
|
亚洲国产精品成人久久蜜臀
|
99久久免费国产精品特黄
|
麻豆AV一区二区三区久久
|
99久久精品久久久久久清纯
|
免费精品久久天干天干
|
国产精品岛国久久久久
|
一本色道久久88综合日韩精品
|
久久国产高清一区二区三区
|
伊人久久成人成综合网222
|
精品国产VA久久久久久久冰
|
久久综合色区
|
99久久精品免费观看国产
|
久久无码人妻一区二区三区
|
亚洲国产精品成人久久蜜臀
|
亚洲综合婷婷久久
|
人妻无码中文久久久久专区
|
久久频这里精品99香蕉久
|
久久久久99精品成人片牛牛影视
|
伊人久久综合精品无码AV专区
|
2020最新久久久视精品爱
|
久久婷婷成人综合色综合
|
久久久国产视频
|
色综合久久久久综合99
|
93精91精品国产综合久久香蕉
|
精品一区二区久久久久久久网站
|
成人午夜精品无码区久久
|
18岁日韩内射颜射午夜久久成人
|
午夜精品久久久久9999高清
|
久久99精品久久久久久秒播
|
热久久这里只有精品
|
精品九九久久国内精品
|
久久精品嫩草影院
|
久久亚洲国产中v天仙www
|
一级做a爰片久久毛片免费陪
|
久久精品18
|
香蕉久久夜色精品国产尤物
|
99精品久久久久久久婷婷
|
97久久久久人妻精品专区
|
国产精品99久久免费观看
|