我正想通性病的自我學習:: make_unique功能,我發現下面的聲明在cppreference.com在C新型功能++ - 這是什麼代碼意味着
template< class T, class... Args >
unique_ptr<T> make_unique(Args&&... args);
我完全無法理解的簽名上面的方法/功能。
我正想通性病的自我學習:: make_unique功能,我發現下面的聲明在cppreference.com在C新型功能++ - 這是什麼代碼意味着
template< class T, class... Args >
unique_ptr<T> make_unique(Args&&... args);
我完全無法理解的簽名上面的方法/功能。
有在此聲明中使用了許多 「新」 的特點:
template
關鍵字;見https://en.wikipedia.org/wiki/Template_(C%2B%2B))...
參數;見https://en.wikipedia.org/wiki/Variadic_template)unique_ptr
,參見https://en.wikipedia.org/wiki/Smart_pointer)Args&&
,參見https://en.wikipedia.org/wiki/C%2B%2B11#Rvalue_references_and_move_constructors)基本上,代碼的意思是「爲任意類型的任意數量的參數聲明一個函數模板並返回專用於給定類型T的unique_ptr」。另外,右值引用(& &)告訴您參數將被移動而不是被複制。
總之:make_unique<Type>(v)
基本上與unique_ptr<Type>(new Type(v))
相同。
除了既方便又相當於C++ 11的std :: make_shared
你的第二個問題使得這個問題太廣泛了。你爲什麼試圖學習每一個新功能? – Tas
僅供參考:https://isocpp.org/files/papers/p0636r0.html – Tas
否 - 並非所有,但至少他們是如何學習C++ 98同樣我希望逐步提升我的技能到新的水平通過練習的一步練習,就像我學習C++ 98 – Prakash