द्वारा पैरामीटर का स्वामित्व लें, मैं यह स्पष्ट करना चाहता हूं कि मेरी कक्षा A
का निर्माता Data
पैरामीटर का स्वामित्व लेगा।रैवल्यू-रेफरेंस
class A
{
public:
A(std::unique_ptr<Data> data) : _data(std::move(data)) { }
std::unique_ptr<Data> _data;
};
लेकिन, मेरा यूज-केस के लिए, वहाँ कोई कारण नहीं क्यों Data
एक सूचक होना चाहिए, के बाद से एक मान प्रकार पर्याप्त होगा है: करने के लिए स्पष्ट बात मान द्वारा एक unique_ptr
लेते हैं।
class A
{
public:
A(Data&& data) : _data(std::move(data)) { }
Data _data;
};
है इस स्वामित्व संकेत या वहाँ बेहतर विकल्प यह करने के लिए कर रहे हैं के लिए एक वैध तरीका: एकमात्र शेष विकल्प है कि मैं के बारे में सोच सकता है वास्तव में स्पष्ट है कि Data
A
के स्वामित्व में किया जाएगा बनाने के लिए rvalue-संदर्भ द्वारा पास होना जरूरी है unique_ptr
का उपयोग किए बिना?
सीटीओ स्वामित्व क्यों लेता है? –
मैं कन्स्ट्रक्टर इंजेक्शन जैसे विविध कारणों के लिए कन्स्ट्रक्टर स्पष्ट –
@IvanRubinson बनाउंगा। –