2013-05-26 4 views
8

क्या यह एक अस्थायी std :: shared_ptr को हटाना सुरक्षित है?क्या यह अस्थायी std :: shared_ptr को हटाना सुरक्षित है?

उदाहरण:

std::shared_ptr<std::string> create_shared_string() 
{ 
    return std::shared_ptr<std::string>(new std::string("hello")); 
} 

std::cout << *create_shared_str() << std::endl; 

मुझे डर है कि shared_ptr नष्ट हो जाता है और संदर्भ काउंटर भिन्नता पूरा हो गया है और इस प्रकार लौट आए कच्चे सूचक अब सुरक्षित नहीं है जैसे ही शून्य को जाता है। जब तक std::cout << std::endl; समाप्त हो गया है

+0

शायद इसे उत्तर के रूप में जोड़ें? ;) – monoceres

उत्तर

7

what is the lifetime of C++ temporary object

इस मामले में

, लौटे std::shared_ptr विलुप्त नहीं किया जाएगा, ताकि आप कर सकते हैं यह भिन्नता सुरक्षित रूप से।

संबंधित मुद्दे