# 새로운 키워드(C++11 \~) 2

## default 키워드 (무조건 쓰세요)&#x20;

* **결론적으로는 기본적으로 컴파일러가 만들어 주었던 생성자, 연산자, 소멸자를 코드 내에서 더욱 명확하게 보기 위한 키워드이다!**
* default 키워드를 사용하면, 컴파일러가 특정한 생성자, 연산자 및 소멸자를 만들어 낼 수 있다. \
  -> 이를 통해 생성자(기본, 복사), 연산자 및 소멸자를 더 분명하게 표시할 수 있다.
* 그래서, 비어 있는 생성자, 연산자, 소멸자를 구체화 할 필요가 없다.&#x20;

<figure><img src="https://2093748731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQMqxl0iBPcO3zyZX5B19%2Fuploads%2FUBXVwTXDzEGpF5YNiHMh%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202024-04-13%2018.13.10.png?alt=media&#x26;token=7b91d2b5-2e5f-4e5e-aa18-c100481dae81" alt=""><figcaption></figcaption></figure>

## delete 키워드 (무조건 쓰세요)

* **기본적으로 컴파일러가 만들어 주었던 생성자, 연산자, 소멸자를 생성하지 말라고 알려주는 키워드이다!**
* 기존의 방법보다 명확하게 파악할 수 있다. \
  -> 기존에는 private 에 생성자를 넣어두어서 호출하지 못하도록 했다.\
  (하지만, 이 방법은 friend 를 통해서 사용할 수 있었다, 좋지 못한 패턴이다..)&#x20;

<figure><img src="https://2093748731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQMqxl0iBPcO3zyZX5B19%2Fuploads%2FFHWyCrRT8jvhn0Ocy79W%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202024-04-13%2018.15.20.png?alt=media&#x26;token=0b476e76-450d-4173-8152-939c3214171f" alt=""><figcaption></figcaption></figure>

## final 키워드 (컴파일 에러를 확인할 수 있으므로 매우 유용하다)

#### 클래스 상속 막기

* 해당 키워드가 붙는 클래스는 상속하지 않겠다는 것을 의미한다.

<figure><img src="https://2093748731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQMqxl0iBPcO3zyZX5B19%2Fuploads%2FmhEHwaOeV8urSMTJsIu5%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202024-04-13%2018.24.01.png?alt=media&#x26;token=edabf123-80b8-44de-8f67-55786c2feca6" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2093748731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQMqxl0iBPcO3zyZX5B19%2Fuploads%2FykjCuAdYvAsepEsxErkn%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202024-04-13%2018.30.10.png?alt=media&#x26;token=c9d8062f-cc7f-4025-98ec-671abaec9c3b" alt=""><figcaption></figcaption></figure>

#### 오버라이딩 막기&#x20;

* final 키워드를 통해서 함수의 오버라이딩을 막는다.&#x20;

<figure><img src="https://2093748731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQMqxl0iBPcO3zyZX5B19%2Fuploads%2FH2Qsp768pvywpA78sNDo%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202024-04-13%2018.31.08.png?alt=media&#x26;token=2ff2b97b-f328-4545-84c2-134e57d0a154" alt=""><figcaption></figcaption></figure>

## override 키워드 (컴파일 에러를 확인할 수 있으므로 매우 유용하다)

* 자식 클래스에서 부모 클래스의 메서드를 오버라이딩 하겠다고 컴파일러에게 알려주는 방법이다. \
  -> 부모 클래스의 메서드 시그네쳐와 다르다면 컴파일 에러를 발생시킨다.&#x20;

<figure><img src="https://2093748731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQMqxl0iBPcO3zyZX5B19%2Fuploads%2FY7E8WMEUmAnJaT2S2k4y%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202024-04-13%2018.39.08.png?alt=media&#x26;token=5c326604-bed5-48ab-a06d-3fb026fdc6ac" alt=""><figcaption></figcaption></figure>
