işlevi için unique_ptr :: get() işlevi gibi bir argümanı iletmek güvenli midir? getAName(getA().get())
gibi bir işlev parametresini geçmek güvenli midir? getA()
bir nesneyi unique_ptr<A>
döndür.C++:
Aşağıdaki kodun tamamını VS 2010'da test ediyorum, işe yarıyor. Ama C++ standart olup olmadığından emin olmak isterim, diğer C++ derleyicileri ile güvenli mi? konsolda
#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;
}
çıkışları şunlardır:
A()
A
~()
tüm derleyiciler için aşağıda güvenli kodunu yapmak gerekli mi?
unique_ptr<A> a = getA();
getAName(a.get());
c_str() gerekli değil – Kapil