1. const member function (常量成員函數)
const: 不改變數據的內容
2. 參數傳遞 pass by value 和 pass by reference
pass by value:
3. friends 友元
相同class的各個objects互為友元
4. const 的引用
我們可以把引用綁定到const對象上,就像綁定到其他對象上一樣,稱之為對常量的引用易猫,與普通引用不同的是碴巾,對常量的引用不能被用作修改它所綁定的對象:
eg.
一個正確的操作:
const int c1 = 1024 ;
const int &r1 = c1 ;
而若:
r1 = 42 ; // 錯誤贸桶, r1是對常量的引用
int &r2 = ci ; //錯誤皇帮,試圖讓一個非常亮引用只想一個常量對象
5. pass by value 和 pass by reference
缺省條件下粹淋,c++都是以pass by value形式傳遞函數參數的,而值傳遞的參數匙头,編譯器知道這個參數收到保護漫谷,不會修改其值,實際上修改的都是通過拷貝構造函數另外創(chuàng)建的參數副本蹂析,當函數返回時還要調用相應的析構函數析構參數副本舔示,這可能使得pass by value方式傳遞參數變成低效率的操作,不僅僅如此电抚,pass by value還會造成“對象的切割”惕稻,當一個派生類derived class對象以by value 方式傳遞并被看作為一個基類basic class對象時,基類的拷貝構造函數會被調用蝙叛,這時派生類對象的特化屬性都被切割掉了俺祠,只剩下一個基類對象,因此調用的函數都會是基類的函數(與派生類一點關系都沒有了)借帘,但引用傳遞就不會出現上面的倆種現象蜘渣,因為pass by reference通常意味真正傳遞的是指針
因此
1:盡量用pass by reference to const 來代替pass by value ,因為前者比較高效,并且可以避免切割問題姻蚓;
2:對于內置類型以及STL的迭代器和函數宋梧,最好采用pass by value 比較恰當