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形式传递函数参数的,而值传递的参数,编译器知道这个参数收到保护,不会修改其值,实际上修改的都是通过拷贝构造函数另外创建的参数副本,当函数返回时还要调用相应的析构函数析构参数副本,这可能使得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 比较恰当