- 소멸자 : 객체가 메모리에서 사라질 때 자동으로 호출되는 특별한 함수. 생성자가 객체를 만들 때 초기화하는 역할이라면, 소멸자는 객체가 사라질 때 정리하는 역할. 이름 앞에 '~' 물결 표시를 붙인다.
- 클래스 상속 : class Player : public Actor 이렇게 적으면 Player클래스가 Actor 클래스를 상속받는다는 의미. 헤더파일도 포함시켜줘야 한다! #include "Actor.h"
- 초기화리스트 : 생성자 함수에서 중괄호 전제 콜론:을 쓰고 변수들을 초기화하는 방식.
//초기화리스트
Monster(string name)
: name(move(name)), HP(100), power(15), defence(5), speed(10) {}
- explicit : 생성자 앞에 붙는 C++키워드로, 생성자가 자동으로 다른 타입으로 변환(암시적변환)되지 않게 막아주는 키워드. 코드를 더 명확하고 안전하게 만들 수 있다. 매개변수가 하나인 생성자에는 기본적으로 붙이는걸 추천한다.
- std::move() : C++의 이동의미론. 메모리를 복사하지 않고 원본 객체의 자원을 새 객체로 이동시킨다.
- 언제 사용할까
- 리소스가 큰 객체(문자열, 벡터, 파일 핸들 등)를 함수의 인자로 넘길때
- 함수에서 객체를 리턴할 때(RVO/NRVO가 안 되는 상황)
- 소유권이 하나인 객체를 옮길때
- 이동 생성자나 이동 대입 연산자를 정의할 때
- const : 상태를 보여주기만 하는 함수에는 항상 붙여주는게 좋은 습관이다. 이 함수는 객체의 상태를 변경하지 않는다는 약속.
- getter 함수 : 멤버변수에 직접 접근하지 않고, getHP() 같은 Getter 함수를 통해서 간접적으로 접근하도록 하는 것. 이걸 캡슐화라고 부른다. 클래스 안의 변수들을 보호하는 문지기 같은 역할이다.
- void : 값을 변경한 후에 그 변경된 값을 다시 외부로 돌려줄 필요가 없을 때 void를 사용한다.
- override 키워드 : C++에서 가상 함수를 재정의할 때 사용하는 특별한 표시
- override를 쓰면 신규함수가 아닌 부모 클래스의 함수를 재정의한다고 알려주는 것. 함수명이 다르면 오류가 난다. 컴파일러에게도 알리고, 다른 개발자에게도 알려주는 용도이다. 가상 함수에서만 사용 가능하다.
- 재정의 : 부모 클래스에서 이미 정의된 가상 함수의 기능을 자식 클래스에서 새롭게 다시 구현하는 것.