저는 C++의 초보자입니다. 다음 두 파일을 코딩하고 결과에 몇 가지 문제점이 있습니다.C++의 파괴 함수의 시퀀스
#include <string>
class StringTool
{
public:
StringTool(std::string name);
~StringTool();
void Print();
std::string getName();
void setName(std::string name);
private:
std::string name;
};
통화 당
#include <iostream>
#include <string>
#include "StringTool.h"
using namespace std;
StringTool::StringTool(std::string name)
{
this->name = name;
}
StringTool::~StringTool()
{
cout<<"Delete: "<<name<<endl;
}
void StringTool::Print()
{
cout<<"Print: "<<name<<endl;
}
int main() {
StringTool tool = StringTool("Test");
tool.Print();
tool = StringTool("New Test");
tool.Print();
}
출력은 .H :
Delete: Test
Print: Test
Delete: New Test
Print: New Test
Delete: New Test
내 질문은 : 1) 처음에 테스트를 삭제하고 이 왜) 왜 새 테스트를 두 번 삭제합니까?
미리 감사드립니다. 귀하의 도움을 크게 주시면 감사하겠습니다.
1) 생성자에 print 문이 없기 때문에 2) "Nre Test"가'StringTool ("New Test")'및'tool'에 대해 삭제되었습니다. – Jagannath