候捷 面向对象高级开发2 参数传递与返回值

 

  •   构造函数被放在private

 

 

                 表示这个构造函数不可以被外界调用,即不允许被外界创建对象

比如单例模式就是这种写法,构造函数只能被特定函数 getInstance调用

 

  •             常量成员函数   

         

  

在成员函数的后面加const,即为常量成员函数,它不会改变数据的内容

我们在设计成员函数的时候,如果不改变数据内容,就一定要加const

                 下面第二个例子中 const complex c1(2,1); 表示 对象中的参数不可以改变

而如果c成员函数不加const,表示可能会改data,则编译器无法通过

 

  •           参数传递:值传递和引用传递

 

 

养成习惯,尽量不要pass by value,而要用pass by reference,传引用

引用在底层就是一个指针,所以传引用和传指针一样快

如果传引用只是为了速度,而不需要修改数据,则可以加const

如 complex& operator += (const complex&);  不可以修改参数complex的内容

 

  •          返回值和返回引用

 

 

如果可以的话,返回值的传递也要尽量by  reference

 

  •         友元

 

 

在友元中,可以自由取得friend的private成员,而不需要通过成员函数来拿数据

 

  •          相同类的各个对象互为友元

  

 

                以上代码中,func函数的param参数可以直接取得私有成员变量,而不用通过

友元,因为相同类的各个对象互为友元

 

  •         函数体外的各种定义

 

 

        一个好的类设计,需要注意以下几点

           1)数据一定要在private当中

           2)参数尽可能的用reference传递,加不加const看情况

           3)返回值尽可能用reference传递

           4)类的成员函数,应该加const就要加

           5)构造函数尽量用列表初始化

函数不可以返回引用的情况

   如果返回值时函数中的局部变量,则不能返回引用,因为函数结束后,局部变量会销毁

   除了这种情况,函数返回值都可以传引用

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值