標題 [筆記] const & const_cast
時間 2012/04/04 Wed 17:35:48
───────────────────────────────────────
不負責任聲明:以下憑印象+google寫成,有錯誤很正常 0rz
如果有人願意指出錯誤,我會很感謝您的 <(_ _)>
--------------------本文開始分隔線--------------------
在先前的文章中有提到
指定運算元:A::operator =( const A& a ){}
盡量加上 const b:因為有加 const 的關係,可以保證在 function 內,
↓ ↓ B 值不會被更改
T& operator = const (T& b)
↑
&:reference 有加的話效率較高?
當我們希望函數中不要更改任何的物件時
可以使用 const 來限制
如
void mem_function() const
or
get_XXX() const
但是有時候我們在函數中不得不去修改某物件的值時該怎麼辦呢?
如
get_XXX() const
{
if(temp > 0)
{
temp = ???;
}
return temp
}
我們可以使用 const_cast
來解除 const 不得更改物件狀態或值的限制
可是,這樣就造成矛盾了不是?
原先我們是為了不要修改到函數裡面的物件狀態而限制為 const
但是現在卻又把它給解除了
這樣不是很容易就會出現 bug 嗎?
所以 const_cast 盡可能不要用,或是完全不要用
可以將要修正的值,宣告成
mutable temp
即可
http://caterpillar.onlyfun.net/Gossip/CppGossip/constAndmuttable.html
而且盡可能的使用 const ,可以讓程式更少出錯且易於維護
--
▅◣ Origin: 謠 言 報 bbs.csie.fju.edu.tw
▋◤ Author: ie945167 從 219-85-0-189-adsl-nei3.dynamic.so-net.net.tw 發表
▋※ Modify: 2012/04/04 Wed 17:39:05
沒有留言:
張貼留言