我是新手,向各位大神请教一个问题:
用元素接收返回的局部引用,会出现内存错误,但用引用接收返回的局部引用,没有问题,是什么原因?谢谢各位大神解答
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这是输出
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 spring后端vue前端
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥65 汇编语言除法溢出问题