CPP에서 Destructor 메서드를 이해하려고합니다. 사실을 알고 있습니다 : a. 인스턴스가 끝날 때 Destructor 메서드가 자동으로 호출됩니다. b. 명시 적 소멸자 메서드가 정의되어 있지 않으면 컴파일러는 기본 소멸자를 만듭니다 (사용자의 동적 메모리 정리와 같은 특정 작업은 수행되지 않습니다).CPP에서 호출 소멸자 메서드를 이해하는 방법?
그래서 A가 클래스 이름이라고 가정합니다. 여러 번 클래스 A의 소멸자가 호출 될 것입니다 :
"delete [] p"의 마지막 줄은 소멸자로 간주 될 수 없으며, 단지 동적 포인터 p를 삭제하는 데 사용됩니다. 명시 적으로 소멸자가 생성되었는지 여부에 관계없이 A 클래스에 정보가 없으므로 기본 클래스 소멸자가 작성되어 p (두 개의 요소가 A [2]이므로)에 대해 두 번 호출되고 p2에 대해 한 번 총 3 번 호출됩니다 .
위의 정보가 정확한지 여부는 확실하지 않습니다. 희망 CPP 전문가는 나를 도울 수있었습니다. 감사!!
int main(){
A *p = new A[2];
A * p2 = new A;
A a;
delete []p;
}
직접 사용해 보지 않겠습니까? 소멸자가있는 클래스를 작성하고 stdout에 무엇인가를 출력하십시오. http://cpp.sh/7cqsw – tkausl
"그리고 한 번 p2"- 음. 아니. 'p2 삭제 '가 없으며'p2'에 대해'A :: ~ A()'가 호출되지 않습니다. 세 번은'a'의 파괴를위한 것이고'p' 시퀀스의 파괴입니다. – WhozCraig
@tkausl 고맙습니다. –