请问老师关于拷贝构造的问题
来源:8-5 拷贝构造及临时对象的优化
Osuribaba
2020-06-09
请问老师,如图里面,我自己写了个Test类,以及一个 test_func 的函数,这个函数返回一个 Test 类。
在main函数中让一个 Test ty 接收函数返回值。按照我的理解 test_func 中 return 的那个 t 应该在函数执行完的时候就被释放了,所以 main 函数中第37行那里应该会触发拷贝构造呀,但是执行的时候发现并没有触发。
编译选项确认了一下并没有开启什么优化:
然后还有个问题是:
我给 test_func 这个函数的返回值加了个引用,按我理解返回引用的话应该不会触发拷贝构造了,但是这触发了,并且拷贝构造中拿到的 string 值是一堆乱码,所以有点不明白,是因为 test_func 中的 str 在 test_func 执行完毕的时候被释放的原因么?
谢谢老师~
写回答
1回答
-
quickzhao
2020-06-10
这里返回引用是危险的,对象的生存周期已过,内容是未定义的。拷贝构造没有调用你试试其他编译器看看,我不清楚你的编译器是什么,你最后的赋值是在哪里完成的。
042020-06-10
相似问题