美文网首页
Boolan-1-4 参数传递与返回值

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

作者: FAN_Z | 来源:发表于2017-07-20 19:19 被阅读0次

    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 参数传递与返回值

          本文链接:https://www.haomeiwen.com/subject/exbqkxtx.html