上面這個程序中X類通過重載“operator A()”來實現(xiàn)將X類型對象轉(zhuǎn)換成A類型,這種方式需要先創(chuàng)建一個臨時A對象再用它去賦值目標(biāo)對象;更好的方式是為A類增加一個構(gòu)造函數(shù):
A(const X& rhs) : dat(rhs) {}
同時,請注意上面程序的第45行more的類型在調(diào)用std::cout時被隱式地轉(zhuǎn)成了int!
一個簡單boost::ref實現(xiàn)
通過重載type cast operator,我們就可以自己實現(xiàn)一個簡版的boost::ref。
1 #include
2
3 template
4 class RefHolder
5 {
6 public:
7 RefHolder(T& ref) : ref_(ref) {}
8
9 /* 重載“(T&)A”操作符 */
10 operator T& () const {
11 return ref_;
12 }
13
14 private:
15 T& ref_;
16 };
17
18
19 template
相關(guān)推薦:
2010年9月計算機(jī)等級考試成績查詢時間匯總
2011年計算機(jī)等級考試二級C++輔導(dǎo)筆記匯總
2011年上半年計算機(jī)等級考試報名時間匯總
2011計算機(jī)等級考試二級C++輔導(dǎo)實例編程匯總