push에서 왜 소멸자가 작동되죠?
class Status {
public:
Status() {
std::cout << "Status::" << __FUNCTION__ << __LINE__ << std::endl;
}
~Status() {
std::cout << "Status::" << __FUNCTION__ << __LINE__ << std::endl;
}
Status(int status, std::string _token): status(status), token(_token) {
std::cout << "Status:: Status(int, std::string)" << __LINE__ << std::endl;
}
int status = 10;
std::string token = "";
};
int main(int argc, char* argv[])
{
queue mStatusQueue;
mStatusQueue.push(Status(0, "token")); //생성과 소멸 동시에 일어남 왜???
mStatusQueue.pop();
return 0;
}
push를 하게되면 status(0,"token")이 mStatusQueue에 들어가게 되는거 아닌가요?
status(0,"token")<-여기에서 인자있는 생성자가 만들어지면서 생성자 1번
pop()에서 queue안에 있는 데이터를 삭제시키니깐 소멸자 1번
이론상은 이렇게 이해하고있는데 혹시 왜 그런지 설명해 주실 수있나요?
push의 파라미터로 쓰인 임시 Status 객체로
push의 파라미터로 쓰인 임시 Status 객체로 인한 것이겠지요.
Signature :) - "여유를 갖고 행동하되 게을러지지 말자"
댓글 달기