#include <iostream>
using namespace std;
class A{
int b;
public:
A(){
cout<<"Constructor for class A called\n";
b = 6;
}
~A(){
cout<"Destructor called for class A\n";
}
};
class B{
A a;
public:
B(){
cout<<"Constructor for class B called\n";
}
~B(){
cout<<"Destructor called for class B\n";
}
};
int main(void){
B obj1;
return 0;
}
예상대로 호출되지만 즉 OBJ1 B의 객체의 범위를 벗어날 때에 만 B의 소멸자 불린다. A의 obj가 B의 멤버 중 하나인데도 왜 A의 소멸자이 호출되지 않습니까?소멸자 호출
@Nawaz 답장을 보내 주셔서 감사합니다. 이것이 원래 코드입니다. A의 소멸자는 호출되지 않습니다. – niting112
A의 소멸자가 확실히 호출되었습니다. 코드가 컴파일되지 않습니다. ~ A()를 참조하십시오. – juanchopanza
@juanchopanza 네, 그렇습니다.하지만 VS2010은 단일 '<'를 사용하여 오류를 던지지 않았습니다. – niting112