返回信息流比如函数的形参如下
push (int &i)
{
......
}
函数调用时如果写成 push(i); //没问题
而如果写成 push(i++); //编译时报错
但如果把函数的形参改成
push (const int &i)
{
......
}
则 push(i) 和 push(i++) 都可以通过编译
为什么前一个对临时变量的引用出错,而加个const后就没错了呢?
看网上说法不一。。。请求达人给个解释~
先谢谢啦!
这是一条镜像帖。来源:北邮人论坛 / cpp / #19744同步于 2009/3/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[请教:] 对临时变量的引用
tracy85
2009/3/2镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
能麻烦说得详细点吗。。。不是很懂
【 在 perfectfan 的大作中提到: 】
: 我觉得和
: const int &a=42能编译通过一样道理吧?
我说得不一定对,大家拍砖[em17]
后置的自增运算符返回一个右值
根据C++ Primer 第四版中文版52页的描述
const引用可以初始化为不同类型的对象或者右值,而对于非const引用是不合法的。
对于上面代码里面传入给函数的参数i++,假设i++生成了临时对象temp,并且函数的参数i绑定到了其上,
那么用户在函数里面对i作的所有修改并不会导致传入参数的修改。而声明为const引用则完全避免了这一点
恩,查了下Primer,弄明白了,呵呵谢谢!
【 在 Vampire 的大作中提到: 】
: 我说得不一定对,大家拍砖[em17]
: 后置的自增运算符返回一个右值
: 根据C++ Primer 第四版中文版52页的描述
: ...................