Boolan-1-4 参数传递与返回值

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 比较恰当

你可能感兴趣的:(Boolan-1-4 参数传递与返回值)