Jak stwierdzono w tytule, tutaj jest mój kod:Jaka jest różnica między usunąć i wzywającą destruktora w C++
class Foo {
public:
Foo (int charSize) {
str = new char[charSize];
}
~Foo() {
delete[] str;
}
private:
char * str;
};
Dla tej klasy, co byłoby różnicy między:
int main() {
Foo* foo = new Foo(10);
delete foo;
return 0;
}
i
int main() {
Foo* foo = new Foo(10);
foo->~Foo();
return 0;
}
Powinieneś nigdy nie mieć powodu, aby wywoływać destruktor jawnie, z wyjątkiem kilku sytuacji, w których będziesz wiedział, że musisz. – chris
@chris Takich jak praca wokół braku miejsca docelowego Usuń: http://stackoverflow.com/questions/6783993/placement-new-and-delete –
@ScottJones, Dokładnie. – chris