我是新手,向各位大神请教一个问题:
用元素接收返回的局部引用,会出现内存错误,但用引用接收返回的局部引用,没有问题,是什么原因?谢谢各位大神解答
C++返回局部引用的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
10条回答
- threenewbee 2016-02-14 01:37关注
因为你定义了拷贝构造函数
#include <stdio.h> #include <iostream> using namespace std; class Teacher { public: Teacher(int a); Teacher(const Teacher &t2); Teacher& retT(); Teacher(int a,int b); ~Teacher(); int a; int b; }; Teacher::Teacher(int a) { this->a = a; cout << "执行Teacher构造函数 \n a=" << this->a << endl; } Teacher::Teacher(int a,int b) { this->a = a; this->b = b; cout << "执行Teacher构造函数 \n this->a=" << this->a << ";this->b=" << this->b<< endl; } Teacher::Teacher(const Teacher &t2) { this->a = t2.a; cout << "执行Teacher的copy函数 t2.a=" << t2.a << endl; } Teacher::~Teacher() { cout << "执行Teacher析构函数 this->=" << this->a << endl; } Teacher& Teacher::retT() { Teacher t1(120); Teacher &t2 = t1; return t2; } void main() { Teacher t1(12); Teacher &t2 = t1.retT(); //Teacher t2 = t1.retT(); cout << "main05中的t2.a=" << t2.a << endl; }
这么写不会调用拷贝构造函数
执行Teacher构造函数
a=12
执行Teacher构造函数
a=120
执行Teacher析构函数 this->=120
main05中的t2.a=120
执行Teacher析构函数 this->=12
Press any key to continue这是输出
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报