2012-10-06 4 views
1

소멸자에 대한 설명을 사용할 수 있습니다.포인터를 포함하는 객체를 포함하는 객체의 C++ 소멸자

개체에 할당 된 메모리에 대한 포인터가 포함되어 있으면 개체의 소멸자가 해당 포인터에 delete을 호출해야한다는 것을 알고 있습니다. 그러나 개체가 같은 string으로 할당 된 메모리에 대한 포인터를 포함하는 객체가 포함되어있는 경우 :

class Foo 
{ 
    string bar; 
}; 

Foo* foo = new Foo; 
delete foo; 

거기를 내가 문자열의 기본 char[]이 해제 될 수 있도록해야 어떤 일?

+0

형식을 'Foo *'로 수정 해 주시겠습니까? Stackoverflow 내가 1 문자 수정을 할 수 없습니다;) – filmor

답변

2

string 유형의 소멸자는 자신이 소유 한 모든 자원을 정리합니다. 객체의 소멸자는 구성원 객체의 소멸자를 호출합니다.

2

string 클래스 소멸자는 모든 클린업의 책임이 있습니다. 그것에 대해 걱정할 필요가 없습니다.

2

클래스가 소멸되면 모든 멤버 (예 : string)도 자동으로 소멸됩니다.

string (그 중 char 배열이 다른 클래스가 의존해서는 안되는 구현 세부 사항)에 포함 된 내부 리소스를 정리하면 string 개체의 소멸자가 발생합니다.

1

다음과 같이 규칙을 볼 수 있습니다. new를 사용하여 생성하고 소유권을 보유한 모든 객체는 소멸자에서 delete을 호출하여 소멸되어야합니다.

관련 문제