Copy constructor not called?(没有调用复制构造函数?)
问题描述
据我所知,您在以下情况下调用复制构造函数:
1 实例化一个对象并使用另一个对象的值对其进行初始化时
2 按值传递对象时.
3 当一个对象按值从函数返回时.
我决定对此进行测试,并制作了这个小程序来测试它(每次调用构造函数时都会显示消息.它似乎适用于前两种情况,但不适用于第三种情况.我想找出我的错误. 欢迎提出想法.
As far as I know you call the copy constructor in the following cases:
1 When instantiating one object and initializing it with values from another object
2 When passing an object by value.
3 When an object is returned from a function by value.
I decided to put this to the test and I made this small program testing this (with messages each time a constructor is called. It seems to work for the first two cases, but not for the third one. I want to find out my mistake. Ideas are welcomed.
推荐答案
因为返回值优化 第三个测试用例的拷贝构造函数调用被编译器优化掉了.
Because of Return Value Optimization the 3rd test case's copy constructor call is optimized away by the compiler.
这篇关于没有调用复制构造函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!