class B;
class A
{
public:
A ()
: m_b(new B())
{
}
shared_ptr<B> GimmeB ()
{
return m_b;
}
private:
shared_ptr<B> m_b;
};
Nehmen wir an, B ist eine Klasse, die semantisch nicht außerhalb der Lebensdauer von A existieren sollte, dh es macht absolut keinen Sinn, dass B für sich allein existiert. Sollte GimmeB
ein shared_ptr<B>
oder ein zurückgeben B*
?
Ist es im Allgemeinen empfehlenswert, die Verwendung von Rohzeigern in C ++ - Code anstelle von intelligenten Zeigern vollständig zu vermeiden?
Ich bin der Meinung, dass dies shared_ptr
nur verwendet werden sollte, wenn eine explizite Übertragung oder Aufteilung des Eigentums erfolgt, was meiner Meinung nach außerhalb von Fällen, in denen eine Funktion Speicher reserviert, mit einigen Daten füllt und zurückgibt und Verständnis besteht, ziemlich selten ist zwischen dem Anrufer und dem Angerufenen, dass der erstere jetzt für diese Daten "verantwortlich" ist.