C++返回局部对象
来源:互联网 发布:笔记本电脑com端口 编辑:程序博客网 时间:2024/04/28 20:36
引用 看做一个静态的指针 const 指针
引用是C++中的概念,引用既不是变量的拷贝,也不是指向变量的指针;
相对于指针:
引用被创建同时必须被初始化;
不能有NULL引用,必须与合法存储单元关联;
引用被初始化,引用关系就不能改变;
我的理解是引用是编译器产生的变量表中变量的一个名字,类似于表中这个变量的索引的一个东西;
有人这样说:
程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变其指向的对象(指针变量中的值可以改),而引用对象则不能修改。
引用的地址概念;
指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。
局部对象也可以返回
因为C++中使用临时复制对象来传值的缘故.例如: 局部string Str 对象,return Str;时C++会用一个临时复制对象来保存Str的值,接着Str的生存期结束,然后临时对象的值被赋给调用处,最后临时复制对象的生存期结束,通过汇编代码会看到返回的时候会再构造一个对象,最后析构2次,但是第二次析构的时候临时对象已经复制到调用处了。
004518E8 call dword ptr [__imp_std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >(47E7F0h)]
004518EE cmp esi,esp
004518F0 call @ILT+4760(__RTC_CheckEsp) (42529Dh)
004518F5 mov ecx,dword ptr [ebp-118h]
004518FB or ecx,1
004518FE mov dword ptr [ebp-118h],ecx
00451904 mov byte ptr [ebp-4],1
00451908 mov esi,esp
0045190A lea ecx,[ebp-4Ch]
0045190D call dword ptr [__imp_std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char>> (47E7CCh)]
00451913 cmp esi,esp
00451915 call @ILT+4760(__RTC_CheckEsp) (42529Dh)
0045191A mov byte ptr [ebp-4],0
0045191E mov esi,esp
00451920 lea ecx,[ebp+0Ch]
00451923 call dword ptr [__imp_std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >(47E79Ch)]
- C++返回局部对象
- C函数返回局部变量
- C局部变量返回值
- C 函数返回局部变量
- C函数返回局部变量
- c 函数 返回局部变量
- C函数返回局部变量
- C语言 -- 返回局部变量
- c语言返回局部变量
- java中返回局部对象问题
- c++返回函数局部对象的引用
- 为什么不能返回局部对象的应用
- C++ 返回局部对象的值
- cpp,函数返回一个局部对象。
- 不要返回局部对象的引用
- c++返回函数局部对象的引用
- 不能返回局部对象的引用
- C语言--返回局部变量的地址
- java中代码检查checkStyle结果分析
- weblogic 中域,集群,管理服务器和被管服务器之间的关系
- WM_TIMER 消息的问题
- 编译安装 Apache + Subversion + LDAP
- FAT32文件系统简介
- C++返回局部对象
- ria +prism 难解问题之 "返回类型必须是实体或复杂类型、复杂类型的集合或预定义的可序列化类型之一"
- 职场加薪步步高升的五大法则
- 深入分析 Java I/O 的工作机制
- ORACLE的存储过程语法集锦
- hibernate 10 事务和并发 | hibernate 实战(第二版) 第10章事务和并发 | 笔记
- sun.net.client.defaultReadTimeout属性问题
- LTE SRS rules
- iPhone iOS5 beta版本bug