引用、常引用、const CString& 08.12.13

本文深入解析C++中的引用概念,包括引用的定义、使用场景及其与指针的区别。特别是介绍了常引用的应用,如何通过常引用提高函数调用的效率,并避免参数被意外修改。

    C++决定,任何人,任何时候,可以给一个已知的对象(或者变量)再起一个名字----这就是引用。

表达式可以是这样:

int i = 9;

int& ii = i;

CString str(“idealsoft”);

CString& strAlias = str;

 

那个取地址的操作符“&”,很不情愿的站在了别名(alias)的左边,虽然它的心还在右边,虽然它还是在取用右边人物的地址,是的,这就是引用,实质上就是将一个现有的地址赋给另外一个常地址。

引用是不能再次赋值的,这符合const变量的特征,它被来自原变量的地址初始化。其实,就像它一样:

char* const p = “idealsoft”;

一个内容可以改变,而自身无法改变的指针,给了我们另外的一个神秘而诡异的名字,它就是传说中的引用。

 

 

常引用,你只能看,却永远也别指望碰到它。其实,就像它一样:

再加上一个const,让它的内容也不能被改变:

const char* const p = “idealsoft”;

 

Print(const CString& str)

{

printf(“I’m just %s/n”, str); //曾经我问过,为什么printf能够打印CString?

}

……

int main()

{

CString str(“idealsoft”);

Print(str);

}

 

 

我们为什么要用常引用?而不直接用C++“标榜”的对象,或者其它?显然,我们已经知道引用就相当于一个不可变的指针,在参数传递的时候,完全不必将整个对象压栈,而仅需压入一个指针,你可以想象一个充斥着一望无垠对象的程序,它的效率将会怎样的不堪入目。常引用则同时避免了,我们的参数被恶意的篡改。

 

 

附实例:

函数声明:

UINT GetGWAllGrpID(CStringArray &straGrpID);

函数定义:

UINT CGWSelStkWork::GetGWAllGrpID(CStringArray &straGrpID)

{...}

函数引用:
     CStringArray *tmpGrpID = new CStringArray;

GetGWAllGrpID( *tmpGrpID );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值