Je suis nouveau dans shared_ptr. J'ai quelques questions concernant la syntaxe de C++ 0x shared_ptr comme ci-dessous:Question de syntaxe de base pour shared_ptr
//first question
shared_ptr<classA>ptr(new classA()); //works
shared_ptr<classA>ptr;
ptr = ?? //how could I create a new object to assign it to shared pointer?
//second question
shared_ptr<classA>ptr2; //could be tested for NULL from the if statement below
shared_ptr<classA> ptr3(new classA());
ptr3 = ?? //how could I assign NULL again to ptr3 so that the if statement below becomes true?
if(!ptr3) cout << "ptr equals null";
Pourquoi make_shared mieux ici? –
@Fred: Séparation des responsabilités. 'make_shared <>' permet à la bibliothèque de gérer le 'new', donc votre code n'affiche pas une invocation' new' apparemment déséquilibrée. La bibliothèque fait le 'delete', donc il devrait aussi faire le' new'. –
@Fred Nurk: 'make_shared' peut potentiellement éliminer une allocation. – ybungalobill