首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

临时变量的有关问题!

2012-02-22 
临时变量的问题!!more effective c++中有段话说:“函数调用一个临时对象传递给一个non-const-reference参数

临时变量的问题!!
more effective c++中有段话说:“函数调用一个临时对象传递给一个non-const-reference参数是不允许的!!”。
那么如下两个程序
  f(int &a){}
  int b;
  f(b);
这个是可以的但是如果把int b变成char b的话
  f(int &a){}
  char b;
  f(b);
就会出错!!这时的f参数必须是const-reference的才对,那么我理解:临时变量是不是不同与局部变量,临时变量只在发生隐式转换的时候才产生呢!!等待高手门为我解答!!!

[解决办法]
临时对象当然不同于局部对象了!

临时对象是编译器在背后隐含的操作,而局部对象是你在某个scope内声明的变量,当离开了这个scope,这个局部对象就不存在了,但是在

这个scope之内,是可以随便使用的!

临时对象不光发生在隐式转换的时候才产生,例如,有时候return的时候,也会产生临时对象
[解决办法]
在程序设计语言的概念中,一般“临时”的东西都是匿名的。
但匿名的东西不一定都是临时的。比如匿名结构体。
[解决办法]
你把b变为char了,再传给函数f肯定会产生临时变量
但临时变量不仅仅局限在隐式转换的时候
class A;
vector<A> v(9); 这里就会产生临时变量

热点排行