In C++, wessen Verantwortung ist es, Mitglieder einer Klasse zu löschen: die Klasse oder der Ersteller einer Instanz dieser Klasse?
Zum Beispiel in dem folgenden Code:Wessen Verantwortung ist es zu löschen
class B {
public:
B(int x) { num = x; }
int num;
};
class A {
public:
A(B* o) { obj = o; }
B* obj;
};
int main(void) {
A myA(new B(3));
return 0;
}
Sollte main
löschen die Instanz von B
oder dessen lokale Variable obj
A
‚s destructor löschen? Ist das in den meisten Fällen der Fall und in welchen Fällen ist dies der Fall?
Dies ist, was ein Destruktor ist. Also, um die Frage zu beantworten, die Klasse, wenn der Destruktor aufgerufen wird. Wenn Sie intelligente Zeiger verwenden, müssen sich beide nicht darum sorgen. – chris
Das wäre Ihre Design-Wahl. Die einzige erzwungene Regel ist folgende: Ihr Programm muss 'löschen' für jedes' neue' aufrufen. –