1.4参数传递与返回值(1)

继续分析complex类

const member functions(常量成员函数)

 

上图类中的函数:

    double real () const {return re;}

    double imag () const {return im;}

以上两个类中的函数不改变类中的成员data变量,所以加const。 

 Note:不会改变类中的数据内容的函数,马上加上const。

  有const修饰real函数和imag函数时,以下两种情况均可。

       

 第二种情况为定义了一个const对象,表明该对象的data是不可改变的。


但是无const修饰的real函数和imag函数时,第二种情况创建对象时使用const了,表明创建的对象的data不可以改变;但是调用的无const修饰的real函数和imag函数表明real函数和imag函数可能会改data,前后矛盾,编译器会报错。   所以在函数不改变data时,切记加上const


·参数传递: pass by value vs. pass by reference (to const)


  尽量不要使用pass by value(传值)。

  pass by reference(传引用):相当于传指针,引用在底层就是一个指针(C中可以传指针(即地址)),指针和引用在底层的实现是一样的。

   pass by reference to const: 

      上图中黄色部分参数中const complex&,&表明pass by reference,加上const 表明 pass by reference to const,const 限制不可以改变引用所指向的data,如果改变,则编译出错。

  pass by reference:

    上图中黄色部分参数中ostream& 表明pass by reference,无const,表明该参数所在函数会对传进来的参数做改变,不然的话应该加const。

 pass by value: value多大就整个传多大,将value压到栈中。

    上图中黄色部分参数中double 没有&表明是pass by value。


NOTE:建立一个良好的习惯,所有的参数传递都尽量 pass by reference,尽量不要pass by value。

        当然细节上如果传递value时,传递使用的存储空间小于传递引用使用的存储空间时,还是选择pass by value。


结论: 参数传递尽量都传引用,当传递的数据所占存储空间很小时,可以选择传值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值