C++ 공부

C++언어 기초 - 4. 객체지향 프로그래밍

Client Side 2025. 8. 21. 21:56
  • 소멸자 : 객체가 메모리에서 사라질 때 자동으로 호출되는 특별한 함수. 생성자가 객체를 만들 때 초기화하는 역할이라면, 소멸자는 객체가 사라질 때 정리하는 역할. 이름 앞에 '~' 물결 표시를 붙인다.
  • 클래스 상속 :    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를 쓰면 신규함수가 아닌 부모 클래스의 함수를 재정의한다고 알려주는 것. 함수명이 다르면 오류가 난다. 컴파일러에게도 알리고, 다른 개발자에게도 알려주는 용도이다. 가상 함수에서만 사용 가능하다.
    • 재정의 : 부모 클래스에서 이미 정의된 가상 함수의 기능을 자식 클래스에서 새롭게 다시 구현하는 것.