Smart Pointer Boost
-
Hallo,
ich versteh richtig dass Smart Pointer nichts anderes als Pointer sind nur dass sie eine Referenzzaehlung dabei haben. Was ich nicht ganz versteh dass ein Zeiger doch nur auf eine Variable zeigen kann. Woher soll der Smart Pointer wissen ob noch ein anderer Smart Pointer auf diese zeigt ?
-
Blau und 42 blurry
-
Die Smart Pointer kennen sich bestimmt unter einander. Klaro.
-
blurry333 schrieb:
Woher soll der Smart Pointer wissen ob noch ein anderer Smart Pointer auf diese zeigt ?
blurry333 schrieb:
[...]Smart Pointer [haben] eine Referenzzaehlung dabei...
-
blurry333 schrieb:
Die Smart Pointer kennen sich bestimmt unter einander. Klaro.
jepp. Die gehen regelmäßig in die Kneipe und nach 42 Bier sind sie alle blau.
-
nwp3 schrieb:
blurry333 schrieb:
Woher soll der Smart Pointer wissen ob noch ein anderer Smart Pointer auf diese zeigt ?
blurry333 schrieb:
[...]Smart Pointer [haben] eine Referenzzaehlung dabei...
Vielleicht fehlt ihm hier nur der Hinweis, dass die Smartpointer sich diesen Referenzzähler teilen.
-
Ein kleines Video um SmartPointer zu verdeutlichen
http://www.youtube.com/watch?v=lQw4i5x6uyo&list=PLfthkO_8dYCqARBKnZQm6Ck614Td9Vmz7
-
Das Video ist echt gut.
Kann man einem boost::shared_ptr auch eine Variable mit dem &Operator zuweisen oder laeuft das immer ueber die Initialisierung in runden Klammern ?
boost::shared_ptr<Test> smart_ptr(new Test() ) ; ptr->funkInClassTest();
-
Immer mit
make_shared, wenn man keinen selbstdefinierten Deleter braucht:#include <boost/make_shared.hpp> boost::shared_ptr<Test> smart_ptr(boost::make_shared<Test>()); ptr->funkInClassTest();
-
Wieso boost? Alle modernen Compiler haben std::shared_ptr und std::make_shared implementiert.