초기화 리스트: 생성자 호출과 동시에 멤버변수들을 초기화해줌. 초기화 리스트를 사용한 경우는 생성과 초기화를 동시에 진행한다. (기존에 배운 생성자로 객체를 초기화하는 경우 생성을 먼저 하고 그 다음에 대입을 수행) 생성과 초기화를 동시에 진행하는 것이 성능상 더 효율적이고, 레퍼런스와 상수를 초기화해줄 수 있게됨.

// 초기화 리스트
(생성자 이름) : var1(arg1), var2(arg2) {}

//예시
Marine::Marine(int x, int y)
: coord_x(x), coord_y(y), hp(50), damage(5), is_dead(false) {}

static

c언어처럼 static 변수는 함수가 종료될 때 소멸되는 것이 아니라 프로그램이 종료될 때 소멸됨. 어떤 클래스에 static변수를 만들면 프로그램이 종료될 때 까지 (객체가 아닌)클래스에 종속되어 유일하게 유지되는 데이터를 만들 수 있음

static으로 함수를 만드는 경우, 객체가 없어도 클래스 자체에서 호출이 가능한 함수를 만들 수 있음

this

객체 자기 자신을 가리키는 포인터

Const 함수

객체의 값을 바꾸지 않고 읽기만 하는 마치 상수 같은 멤버 함수. 상수 함수 내에서는 객체들의 '읽기'만 수행되며, 상수 함수 내에서 호출 할 수 있는 함수로는 다른 상수 함수 밖에 없다.

<aside> 💡 // Const함수 (기존의 함수의 정의) const;

</aside>

생각해보기 1

#include <iostream>
class A {
	int x;
	public:
	A(int c) : x(c) {}
	A(const A& a) {
		x = a.x;
		std::cout << "복사 생성" << std::endl;
	}
};
class B {
	A a;
	public:
	B(int c) : a(c) {}
	B(const B& b) : a(b.a) {}
	A get_A() {
		A temp(a);
		return temp;
	}
};
int main() {
	B b(10);
	std::cout << "---------" << std::endl;
	A a1 = b.get_A();
}