问题描述
问题解答
回答1:1) 返回一个nullptr, 没有特殊的作用。
2) 因为编译器在处理这种情况时会优化掉你的代码,类似:
my_unique_ptr<Mint> p4(new Mint(19));
所以你的move ctor没有调用。这个优化通常称为Return Value Optimization(RVO),标准里称作 Copy Elision。如果你使用的是G++,你可以在编译参数里加入-fno-elide-constructors来禁用这个优化,看看结果有何不同。

问题描述
问题解答
回答1:1) 返回一个nullptr, 没有特殊的作用。
2) 因为编译器在处理这种情况时会优化掉你的代码,类似:
my_unique_ptr<Mint> p4(new Mint(19));
所以你的move ctor没有调用。这个优化通常称为Return Value Optimization(RVO),标准里称作 Copy Elision。如果你使用的是G++,你可以在编译参数里加入-fno-elide-constructors来禁用这个优化,看看结果有何不同。
相关文章:1. C++ 模板 map 如何根据 key 排序2. c++ - 请问怎样用构造函数的初始化列表对类内包含的对象(其他类)进行初始化?3. c++ - std::hash<string>()(...)是什么意思,怎么理解?4. c++ - boost的read函数参数和bind函数参数看不懂5. 这一段c++是什么意思?6. 数据结构和算法 - 关于c++栈结构算法题7. c++ - 有没有const右值引用?8. c++ - 在main函数执行之前段错误,gdb无法调试,估计和g++编译参数相关。9. atom有什么好用的C++扩展10. c++11 - C++中#pragma后面加个名字在文件中有什么作用
网公网安备:皖ICP备2020019022号-8 Copyright ¢ 2020-2025 Powered by V1.8 All Rights Reserved 技术支持:乐呵呵网
声明:本站所有资源以学习为主