को समझने में अद्वितीय_ptr प्रिंटिंग यह समझ में नहीं आता कि यह क्यों विफल रहा है?cout
int *p = new int(10);
std::unique_ptr<int> ptr(p);
// Below line gives compilation error.
std::cout << "Value of ptr " << ptr << std::endl;
// Below line works well.
std::cout << "Value pointed ptr " << *ptr << std::endl;
std::cout << "Value of ptr->get() " << ptr.get() << std::endl;
मैं इसे इस तरह से समझते हैं:
कहो पी पता 100, नई आबंटित स्मृति के पते 200.
p new allocated memory
---------- ---------
200 10
---------- ---------
100 200
ptr
----------
200
----------
300
ऊपर चित्रण में है, unique_ptr नव आबंटित स्मृति की ओर इशारा करते है खुद, 'पी' से परहेज। तो, मुझे 'पीटीआर' प्रिंट नहीं करना चाहिए 200 मुझे?
ओहो। सही बात। अधिभारित करने के लिए C++ समुदाय को रोक रहा था < –
@ हेमंत भार्गव: वास्तव में जरूरी नहीं है। सी ++ मानक पहले से ही बहुत बड़ा है (*), सामान जोड़ने से लगभग कोई भी इसका उपयोग नहीं करेगा। *: नहीं, मेरे पास क्या निकालना है इसके लिए कोई अच्छा सुझाव नहीं है। –
@ मार्टिनबोनर सुझावों को पतला करने के लिए, 'std :: vector' दिमाग में आता है। –
Angew