10. 소멸자와 복사 생성자가 궁금해.
2021. 11. 25. 00:08ㆍc++/기초
소멸자
c++는 우리가 임의로 할당한 메모리에 관해선 직접 메모리를 삭제해주어야 한다.
안 그럼 메모리에 그대로 그 값이 저장되어 컴퓨터의 용량을 차지한다. (다행히 재부팅하면 초기화 됨.)
지역에서 생성된 객체가 지역 범위를 벗어나거나 동적으로 할당된 객체가 명시적으로 삭제 된다면
소멸자가 자동으로 호출된다.
소멸자의 특징
0. 앞에 ~가 붙음.
1. 소멸자는 클래스 이름과 같다. (생성자와 동일)
2. 인수(argument)가 없음.
3. return이 없음. (생성자와 동일)
역할
동적으로 할당된 메모리를 삭제해준다!
물론 동적으로 배정된 메모리의 경우 삭제해주는 코드는 직접 작성해주어야 한다.
복사 생성자
객체를 복사해서 사용하고 싶을 때!

위의 형식으로 정의 된다.
생성자와 거의 유사하지만 argument를 위처럼 넣어주면 된다. const를 앞에다 붙여줄 경우 값을 변경할 수 없다.

body부분에 이렇게 복사를 해준다. 단! pc의 멤버의 값은 변경할 수 없다.
이러한 코드를 쓸 때 pc의 값을 변경할 일이 없다면 꼭 const를 붙여주자.
사실 위 처럼 코드를 작성해줄 필요도 없이 그냥 복사 생성자 안에 넣어주기만 하면 된다.
디폴트 복사 생성자가 있기 때문이다.
생성자와 소멸자의 body가 없으면 아무 기능이 없지만, 복사 생성자는 전부 복사를 해준다!
하지만 동적으로 할당 받는 변수가 있을 경우 에러가 나게 되니. 동적으로 받는 변수가 있다면 직접 깊은 복사를 해주어라!
반응형
'c++ > 기초' 카테고리의 다른 글
| 12. explicit와 mutable가 궁금해 (0) | 2021.11.30 |
|---|---|
| 11. 생성자 초기화 리스트(initializer list)가 궁금해. (0) | 2021.11.25 |
| 9. 오버로딩(Overloading)이 궁금해!! (0) | 2021.11.24 |
| 8. 클래스(Class)에 대해서 궁금해! (0) | 2021.11.24 |
| 7. new 와 delete(동적 배열)이 궁금해. (0) | 2021.11.24 |