临时对象以及const引用详解
来源:互联网 发布:同一格式表格数据汇总 编辑:程序博客网 时间:2024/05/22 14:25
先从一个问题讲起:
设有class A
void DoSomething(A &a)
{
......
}
int main()
{
DoSomething(A());
}
为什么不能这样?
A a;
DoSomething(a);
为什么这样就行?
引用类型的对象的生存期必须在其绑定的对象的生存期之内
改成如下可以:
void DoSomething(A const&a)
{
......
}
{
......
}
A()是临时对象,不能初始化非const左值引用。要么const A&,要么A&&。
微软的扩展允许绑定到非const左值引用上,这导致临时对象生存期的混乱。
资料说c++中临时变量默认const属性,所以只能传给const的引用。规定右值不能绑定到非 const 限定的左值引用。
异常对象另说;如果是右值引用或const左值引用绑定的,那生存期延长为引用;否则到完全表达式结束销毁。还有默认初始化数组元素时延长到数组初始化结束。
在 Visual C++ 以前的版本中,可以将非常量引用绑定到临时对象。 现在,只能将临时对象绑定到常量引用。
实例详解一:http://blog.csdn.net/liuxialong/article/details/6539717
实例详解二:http://bbs.csdn.net/topics/40407738
- 临时对象以及const引用详解
- C++中指针,引用与const,以及const中的临时量对象的探讨
- 函数返回的临时对象为const类型,const引用
- 不允许为非const引用创建临时对象 (关于引用)
- C++非const的引用不能指向临时对象
- C++ const引用、临时变量 引用参数
- C++ const引用、临时变量 引用参数
- 临时对象不能被绑定到非const引用参数上====》扩展到临时对象问题
- const、右值引用、临时对象、析构函数的执行时机
- 随笔(临时变量,引用变量,const)
- 临时对象的引用绑定
- 关于临时对象的引用
- 引用初始化(临时对象)
- 关于临时对象的引用
- C++ const引用详解
- C++ const引用详解
- C++ const引用详解
- C++ const引用详解
- Android TextView丰富多彩的字体样式代码
- 聊天室(自己实现HTTP长连接)
- AndEngine学习笔记--2--自定义button
- Ubuntu Unity系统托盘显示所有图标
- 八大排序算法总结 .
- 临时对象以及const引用详解
- CentOS Tomcat6 修改默认端口8080为80
- 输出源文件的标题和目前执行行的行数
- Hibernate开源框架搭建的简单案例
- C# 控件学习二:ComboBox
- 字符串面试题系列之一:翻转字符串顺序
- Linux进程地址空间的一步步探究
- String s=new String("abc")创建了几个对象?
- oracle正常运行时需要哪几个服务