Posted on 2012-12-16 14:52
鑫龍 閱讀(623)
評論(0) 編輯 收藏 引用 所屬分類:
c++
習慣了這樣寫,但有時候會反問下自己為什么要const和&?
1.為什么要&?
答:&是必須的。
如果它不是引用,在傳遞參數時,會產生一個局部變量做參數,而這個局部變量的構造又要調copy構造函數一次,....那就子子孫孫無窮匱了....
但如果是引用,在傳遞參數時候,局部變量只需要綁定原變量,而不需要再一次調用copy構造函數。
2.為什么要const?
答:const不是必須的。
構造函數是用引用方式傳遞復制對象,引用方式傳遞的是地址,因此在構造函數內對該引用的修改會影響源對象。而你在用對象a1構造a2時,自然不希望復制構造函數會改變a1的內容,因此要防止復制構造函數內部修改該引用,所以一般用const聲明。加不加const還是需要看copy構造的行為,比如std::auto_ptr的構造函數,就沒有const,因為它要獲得原有對象指針的擁有權。