ich habe die letzten Tage begonnen mich etwas in den neuen C++ Standard einzuarbeiten, da der Clang Compiler in der Version 3.0 jetzt schon eine ganze Menge davon implementiert.
Dabei bin ich auf eine Sache gestossen, die ich nicht so ganz verstehe. Vielleicht könnt ihr mir das erklären.
Ich verwende make_shared um einen shared_ptr zu erzeugen. Dabei wird, wenn das Objekt welches ich erzeuge einen Konstruktor mit Parameterliste hat, der Destruktor scheinbar mehrfach aufgerufen. Ist das normal? Hier mal ein Beispiel:
Code: Alles auswählen
class foo
{
public:
foo(int a) {std::cout << "foo constructor" << std::endl;}
~foo() {std::cout << "foo destructor" << std::endl;}
};
class bar
{
public:
bar() {std::cout << "bar constructor" << std::endl;}
~bar() {std::cout << "bar destructor" << std::endl;}
};
int main (int argc, const char * argv[])
{
auto foo_instance = std::make_shared<foo>(42);
std::cout << "A" << std::endl;
auto bar_instance = std::make_shared<bar>();
std::cout << "B" << std::endl;
return 0;
}
Code: Alles auswählen
foo constructor
foo destructor
foo destructor
A
bar constructor
B
bar destructor
foo destructor
Viele Grüße,
Kristof