何时该引用传递 , 何时该指…

先转载,研究清楚了再说

问题提出:

1、当一个类的对象作为实参数传递时,使用值传递和引用传递有什么区别?
   比如: DateType ExampleFun(CString &strFileName,...)与
         DateType ExampleFun(CString strFileName,...)

解答之前,我们先来看2个基本的概念:形参和实参

->通俗的讲:形参是形式上的参数,实参是实际的参数;
->详细的讲:形参只是对实参的一种抽象类型描述,只是声明一个函数(方法)能接受什么类型的实参,而不确定接受的实参具体内容是多少;

实参就是传递给函数(方法)对应形参的具体内容(值),形参的初始指(内容)由实参决定.形参在函数(方法)结束返回后就被释放了.


现在进入主题:参数传递方式分:传值和传址;
1★.传值方式,只是将实参的值的拷贝传递给函数(方法),在方法内对形参进行操作,其对象是实参的拷贝,对实参不能造成影响.在方法结束返回后,形参被释放丢弃,实参的内容并不会改变;

2★.传址方式,将实参的地址传递给函数(方法),在方法内对形参进行操作即等于对实参进行相同的操作,在方法结束返回后,形参同样被释放,实参的内容将会是对形参进行操作的结果. 

而传址方式,又可以细分为:引用传递(pass-by-reference) , 指针传递(pass-by-pointer)

引用其实就是对象的别名,传对象的引用,用于把一个对象的地址作为参数传过去,而不是对象本身。

这是我们就明白了前面问题的答案:传递引用,避免了一次实参到形参的拷贝,提高了效率。

 

★★★关于何时使用引用参数?★★★请参考->
(1★)使用引用参数的主要原因有:
  程序员能够修改调用函数中的数据对象
  通过传递引用而不是整个数据对象,可以提高运行速度

(2★)对于使用传递的值而不做修改的函数:
  如果数据对象很小,如内置数据对象,则按值传递
  如果数据对象是数组,则使用指针,并将指针声明为指向const的指针
  如果数据对象是较大的结构则使用const指针或const引用,以提高效率,节省复制结构所需的时间和空间
如果数据对象是类对象则使用const引用。类设计的语义常常要求使用引用,这是C++新增这项特性的主要原因,因此传递类对象的标准方式是按照引用传递。


(3★)对于修改调用函数中数据的函数:
 如果数据对象是内置数据类型则使用指针。
 如果数据对象是数组则只能使用指针
 如果数据对象是结构则使用引用或指针
 如果数据对象是类对象则使用引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值