◆클래스 인스턴스간 차이(포인터 변수=인스턴스)
▷new 키워드를 이용해 클래스를 만들게 되면 클래스의 실제 값이 Heap영역에 저장되는 것이 가장 큰 차이이다. Heap 영역에 저장되는 클래스의 인스턴스 값은 함수의 실행주기(라이프사이클)에 관계없이 유지된다.
◆delete
▷따라서 new 키워드를 통해 클래스 인스턴스 실제 값을 Heap 메모리에서 삭제해줘야 한다.
▷malloc과 free의 관계이며, new를 쓰고 free로 해제할순 없다.
◆this
▷클래스 맴버 한수는 this라는 키워드를 통해 자기자신의 인스턴스(포인터 타입)을 가져올 수 있다.
▷클래스 맴버 함수를 호출하기 위해서는 호출한 주체인 어떤 클래스 인스턴스가 존재하게 되는데 그 호출 주체를 this 라고 한다.
◆소멸자(Destructor)
▷클래스는 소멸자를 통해 메모리에서 해제될 때의 행동을 지정해줄 수 있다. 이를 소멸자라고 한다.
▷소멸자는 ~클래스명() 으로 선언할 수 있으며, 소멸자도 리턴타입이 존재하지 않는다.
◆소멸자 호출의 필요성
▷모든 동적 메모리를 수동으로 관리해줘야 하는 C++의 특성상 클래스 멤버 변수에 동적 메모리 할당된 개체가 있다고 할 경우 소멸자에서 처리하지 않으면 하나하나 클래스 외부에서 delete 전에 메모리를 해제 해야한다.
◆동적인 char 변수 생성
▷char* 변수 로 생성후 변수 = new char[strlen(사용할 단어+1)];
▷이후 strcpy(변수, 사용할 단어);
▷이때 할당한 것을 소멸자에 delete[] 변수 를 작성해 소멸시 자동으로 해제
--연습프로그래밍18분--
'C++ > C++' 카테고리의 다른 글
[C++] 여러개의 헤더와 소스 (0) | 2023.02.13 |
---|---|
[C++] 열거형 (0) | 2023.02.08 |
[C++] 가상함수 (0) | 2023.02.07 |
[C++] 오버라이드와 오버로드 (0) | 2023.02.07 |
[C++] 클래스 상속 / 접근지정자 (0) | 2023.02.03 |