getAName(getA().get())
जैसे फ़ंक्शन पैरामीटर को पास करना सुरक्षित है? getA()
एक ऑब्जेक्ट unique_ptr<A>
लौटाएं।सी ++: क्या यह एक तर्क पारित करने के लिए सुरक्षित है जैसे unique_ptr :: get() फ़ंक्शन
मैं वीएस 2010 पर नीचे दिए गए पूरे कोड के साथ परीक्षण करता हूं, यह काम करता है। लेकिन मैं यह सुनिश्चित करना चाहता हूं कि यह सी ++ मानक है, क्या यह अन्य सी ++ कंपाइलर्स के साथ सुरक्षित है?
#include "stdafx.h"
#include <memory>
#include <iostream>
using namespace std;
class A
{
public:
A(){ cout<<"A()"<<endl;}
~A(){ cout<<"~A()"<<endl;}
string name() { return "A"; }
};
std::unique_ptr<A> getA()
{
return std::unique_ptr<A>(new A());;
}
void getAName(A* a)
{
if(a)
{
cout << a->name().c_str() << endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
getAName(getA().get());
return 0;
}
कंसोल में आउटपुट हैं:
A()
A
~()
यह सब compilers के लिए नीचे के रूप में सुरक्षित के लिए कोड बनाने के लिए आवश्यक है?
unique_ptr<A> a = getA();
getAName(a.get());
c_str() यदि आप cout – Kapil