В C++, чья ответственность заключается в том, чтобы удалить члены класса: класс или создатель экземпляра этого класса?
Например, в следующем коде:Чьей ответственностью является удаление
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;
}
Если main
удалить экземпляр из B
или должен деструктор A
«s удалить свою локальную переменную obj
? Это правда в большинстве случаев, и в каких случаях это возможно?
Это деструктор. Итак, чтобы ответить на вопрос, класс, когда вызывается деструктор. Если вы используете интеллектуальные указатели, ни о чем не стоит беспокоиться. – chris
Это будет ваш выбор дизайна. Единственное принудительное правило таково: ваша программа должна вызывать 'delete' для каждого' нового'. –