您的位置:首页 > 编程语言 > C语言/C++

c++ 非常量引用产生临时对象

2016-05-13 17:10 447 查看
在c++中,一下几种情况会产生临时对象:

1. 按值进行函数参数传递时

2. 函数返回对象时

3. 发生类型转化时。

c++中产生的临时对象是不可修改的,及默认为const的

非常量引用产生临时对象:

def upper(string& str);

char test [] = "effective c++";

upper(test)  //报错


这里upper 函数的操作是将str转换为大写,而在进行了上面代码的调用时,发生了类型转化,产生临时对象,这时,upper函数进行操作的对象是临时对象,而真正的str并没有进行转换,无法达到预期效果。这就是为什么 C++语言禁止为非常量引用产生临时对象。
若将上文的upper函数的参数改为const string& str, (这里不考虑函数修改str),是正确的。

参考:

1. more effective c++ iterm 19 理解临时对象的来源

2. http://blog.csdn.net/microzone/article/details/6740475
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: