返回栈中成员变量引用类型的陷阱
来源:互联网 发布:动态宣传图制作软件 编辑:程序博客网 时间:2024/06/05 23:04
当一个类返回成员变量的引用,这种用法很常见,但当这个类在一个栈中被实例化时,就要当心这种用法的陷阱,尤其是一些临时实例的场合
#include <iostream>class A{public:int a;A(int _a) : a(_a) { std::cout << "A::A()" << std::endl;}~A() { std::cout << "A::~A()" << std::endl; a = 0; }int & get() { return a; }};A foo(void){return A(1);}int _tmain(int argc, _TCHAR* argv[]){int & a = foo().get();std::cout << "a = " << a << std::endl;return 0;}
如上例,foo()返回一个临时实例,但却保存的这个实例的成员变量的引用,随后的std::cout却访问了已经被析构了的对象的成员!
- 返回栈中成员变量引用类型的陷阱
- 在C++中使用引用类型的成员变量
- 关于引用类型的成员变量
- 如何初始化引用类型的成员变量
- java程序笔试陷阱:静态代码块中变量,成员变量,局部变量的相关陷阱
- 引用类型和const类型的成员变量
- 返回类的私有指针成员变量的引用
- 在类中定义引用类型成员变量
- static成员变量与返回对象的引用
- 类成员变量中存在引用,const,和指针类型时需要注意的事项
- c++中类的引用类型成员
- c++中函数中变量内存分配以及返回指针、引用类型的思考
- 如果从函数中返回局部变量的地址,引用或者指针的形式,则变量类型必须是静态的或者常量,即不在栈中存储
- 返回内部静态成员的陷阱inet_ntoa()
- Java中引用类型变量的转换
- PHP类中成员变量和函数的引用
- 关于java中对于成员变量的引用问题
- 类的引用类型成员
- 第五周任务2
- iphone 处理多点触控
- 读当前打开IE的URL
- 面试题精解之二: 字符串、数组(1)
- Flex中用state来表示不同的状态的经典的例子
- 返回栈中成员变量引用类型的陷阱
- 求一个矩阵中最大的二维矩阵(元素和最大)
- jquery基础
- Keil——map文件
- Linux下面的线程锁,条件变量以及信号量的使用
- 大端法、小端法、网络字节序
- magento Fatal error: Call to a member function toHtml() on a non-object
- 堆和栈的区别(转过无数次的文章)
- extends和 implements 各自的含义与区别