std::map::operator是乙個設計得很磋卻很好用的介面,看下面的例子:
#include
#include
using namespace std;
int main()
mapiimap;
iimap[1] = 2; ---------------------------(1)
iimap[2]; --------------------------------(2)
cout << iimap[1] << iimap[2] << iimap[3] << endl;
return 0;
operator的語義是說:我先查一下這個key,如果沒有就先插入乙個pair(key, value()),然後把value的引用返回。
當(2)這樣用時,它也會插入一對值(2,0),實際上你可能不希望這麼做,可能你只是想看看key=2的值是多少或者存不存在?是的,它沒有意識到何時需要,一定需要插入新值。顯然,當作左值時需要,作右值時只要查一下就夠了。
以自己的乙個hash_table類為例,實現就省了,它有2個不磋的介面:
template
class hash_table
public:
value* get_value(const key& key);
value* set_value(const key& key, const value& value);
為了實現更好的operator,這個介面被設計成:
它再過載operator=和operator value,如下:
operator value()
else
}這樣基本功能就完成了,它能感知=運算子,同時不失一般的在一些地方被隱式轉化成value。
如此還不夠,像+= -= ++ --這些運算子也能代表著必須是左值,你如果乙個乙個過載,很麻煩,再寫乙個一般的包裝類:
protected:
virtual t& get_lvalue()
virtual t get_rvalue()
else}};
cedega讓我快樂!讓痛苦!
在linux上玩遊戲早不是夢想,很早以前,前輩們都用wine來實現。而複雜的配置讓很對初學者望而卻步。現在,菜鳥也可以輕鬆的在linux上跑起來。cs,極品飛車,魔獸,魔獸世界,一大堆的遊戲都可以在輕易的在linux下跑。它就是cedega,其實它早就有了,只是沒有wine那麼讓人普及,畢竟是要收費...
讓CSS更規範 讓設計居中
摘自 長文字行難以閱讀。隨著現代顯示器的尺寸越來越大,螢幕可讀性問題變得越來越重要。緩解這個問題的一種方法是讓設計居中。居中的設計只佔螢幕的一部分,而不是橫跨螢幕的整個寬度,這樣就會建立比較短的容易閱讀的行。居中的設計目前非常時髦,所以如何在css中設計居中是大多數開發人員首先要學習的主題之一。讓設...
重構,讓人快樂讓人苦
重構,是編寫 必須要面對的一項操作,同時也應該是程式設計師樂於實踐的一項內容。不論是邏輯實現還是設計過程,乃至整個分層結構,我們都可能面臨並且實施重構。這篇文章不會告訴您什麼是重構,如何去優美的重構等等的理論,只想和大家分享一些感受,並且 一些問題。最近的兩周,我一直對我們團隊的乙個子業務框架做重構...