2
범위를 벗어날 때 소멸자 호출 순서를 이해하려고합니다. 내가 자식 생성자와 소멸자는 부모로부터 파생 된 것을 알고, 이제범위를 벗어날 때 소멸자 호출 순서? (C++)
class Parent{
Parent(){cout<<"parent c called \n";}
~Parent(){cout<< "parent d called \n";}
};
class Child: public parent{
Child(){cout<< "child c called \n";}
~Child(){cout<<"child d called\n";}
};
, 그래서 다음과 같은 주요 :
int main(){
Parent Man;
Child Boy;
return 0;
}
는 출력을 생성합니다 :
의 나는 다음과 같은 코드가 있다고 가정 해 봅시다parent c called
parent c called
child c called
... //Now what?
하지만 이제 범위를 벗어나면 어떻게됩니까? 컴파일 할 때 순서를 선택하는 방법은 여러 가지가 있습니다. 소년 먼저 파괴되는 경우에 적용 왼쪽 케이스
parent c called | parent c called
parent c called | parent c called
child c called | child c called
child d called | parent d called
parent d called | child d called
parent d called | parent d called
, 그리고 남자가 먼저 파괴되는 경우에 적용 우측 경우 : 나는 두 개의 출력 가능성을 가질 수 있습니다. 컴퓨터가 먼저 삭제할 컴퓨터를 어떻게 결정합니까?
자동 개체, 임시 개체 및 멤버에 대한 소멸자 호출 순서는 생성자 호출과 반대입니다. – ach
항상 프로그램을 실행하여 –
@EdHeal을 찾을 수 있습니다. 아무 것도없는 증거 일 수 있습니다. 샘플은 진술을 위조 할 수는 있지만 결코 진술하지 못할 수 있습니다. – ach