背景

太夸张了家人们,我之前LeetCode刷题一直觉得函数返回的是局部变量,很疑惑为什么我在算法实现的函数里不new一个堆区变量也能ac。刚才忽然意识到返回的是值,而不是指针,所以应该有个返回值拷贝的过程。

于是又想到了返回值拷贝会不会对算法测速有很大影响,尤其是在返回很大的STL容器的时候。于是我去测速了,发现可以说是根本没影响。

于是就又有了个疑惑,就是为什么没影响。于是我搓了个类对象,在各种构造函数里打日志,结果发现返回类对象的时候自动调用移动构造。太强了,为C++的奇怪特性折服。

结论

函数返回对象A,外部用对象B接收。先使用移动构造,通过A构造B,再析构A。

如果觉得我的文章对你有用,请随意赞赏