C++引用(2) - 引用能否指向一个无效地址?

在C++中, 引用比指针更安全,是因为引用变量必须被初始化并且初始化后不能再引用别的对象。但是也有下面的这几种例外情况:
 
1)引用的对象是一个未初始化的指针
int main()
{
    int* ptr;
    int& ref = *ptr;  //引用的是内存中一块随机值
    return 0;
}

需要说明的是:使用visual studio 2015进行编译时,能发现这个问题。会提示“使用了未初始化的局部变量“ptr””这种编译错误。
不过, g++4.8.5是可以正常编译的。

 

2)引用的是一个返回的局部变量

int& fun()
{
   int a = 10;
   return a;
}

一旦fun()返回后,在栈内存上给变量a分配的空间会被回收。这种情况下对局部变量的引用会失效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值