template <class T>
class Stack
{
public:
Stack(int = 10) ;
~Stack() { delete [] stackPtr ; } //<--- What does the "~" signify?
int push(const T&);
int pop(T&) ;
int isEmpty()const { return top == -1 ; }
int isFull() const { return top == size - 1 ; }
private:
int size ;
int top ;
T* stackPtr ;
} ;
답변
소멸자이며 인스턴스를 파괴하고 메모리를 확보하는 등의 작업을 수행합니다.
다음은 ibm.com의 설명입니다.
소멸자는 일반적으로 메모리를 할당 해제하고 객체가 소멸 될 때 클래스 객체와 해당 클래스 멤버에 대한 다른 정리를 수행하는 데 사용됩니다. 객체가 범위를 벗어나거나 명시 적으로 삭제되면 클래스 객체에 대해 소멸자가 호출됩니다.
https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_74/rzarg/cplr380.htm을 참조 하십시오.
답변
다른 사람들이 지적했듯이, 당신이 그것에 대해 묻는 것은 소멸자입니다 class Stack
.
그러나 제목에 표시된대로 정확하게 질문하십시오.
C ++에서 함수 이름 앞에 물결표 “~”는 무엇을 의미합니까?
다른 상황이 있습니다. 클래스 이름 바로 앞 (소멸자 컨텍스트)을 제외한 모든 컨텍스트 ~
에서 보수 연산자 (또는 비트 단위 아님)입니다. 자주 나타나지는 않지만 다음과 같은 경우를 상상할 수 있습니다.
if (~getMask()) { ...
비슷해 보이지만 의미가 매우 다릅니다.
답변
소멸자입니다. 객체가 범위를 벗어나면 함수가 호출됩니다.
답변
이것은 소멸자입니다. 객체가 수명이 다하거나 삭제 될 때 호출됩니다.
명확하게하려면 생성자처럼 ~ NameOfTheClass를 사용해야합니다. 다른 이름은 유효하지 않습니다.
답변
소멸자입니다. 이 메소드는 클래스의 인스턴스가 파괴 될 때 호출됩니다.
Stack<int> *stack= new Stack<int>;
//do something
delete stack; //<- destructor is called here;
답변
그것은 소멸자 일 것입니다 (동적 메모리를 확보하십시오)