ringa_lee
1) 回傳一個nullptr, 沒有特殊的作用。
2) 因為編譯器在處理這種情況時會最佳化掉你的程式碼,類似:
my_unique_ptr<Mint> p4(new Mint(19));
所以你的move ctor沒有呼叫。這個最佳化通常稱為Return Value Optimization(RVO),標準裡稱作 Copy Elision。如果你使用的是G++,你可以在編譯參數裡加入-fno-elide-constructors來停用這個最佳化,看看結果有何不同。
Return Value Optimization(RVO)
-fno-elide-constructors
1) 回傳一個nullptr, 沒有特殊的作用。
2) 因為編譯器在處理這種情況時會最佳化掉你的程式碼,類似:
所以你的move ctor沒有呼叫。這個最佳化通常稱為
Return Value Optimization(RVO)
,標準裡稱作 Copy Elision。如果你使用的是G++,你可以在編譯參數裡加入-fno-elide-constructors
來停用這個最佳化,看看結果有何不同。