초기화 리스트: 생성자 호출과 동시에 멤버변수들을 초기화해줌. 초기화 리스트를 사용한 경우는 생성과 초기화를 동시에 진행한다. (기존에 배운 생성자로 객체를 초기화하는 경우 생성을 먼저 하고 그 다음에 대입을 수행) 생성과 초기화를 동시에 진행하는 것이 성능상 더 효율적이고, 레퍼런스와 상수를 초기화해줄 수 있게됨.
// 초기화 리스트
(생성자 이름) : var1(arg1), var2(arg2) {}
//예시
Marine::Marine(int x, int y)
: coord_x(x), coord_y(y), hp(50), damage(5), is_dead(false) {}
c언어처럼 static 변수는 함수가 종료될 때 소멸되는 것이 아니라 프로그램이 종료될 때 소멸됨. 어떤 클래스에 static변수를 만들면 프로그램이 종료될 때 까지 (객체가 아닌)클래스에 종속되어 유일하게 유지되는 데이터를 만들 수 있음
static으로 함수를 만드는 경우, 객체가 없어도 클래스 자체에서 호출이 가능한 함수를 만들 수 있음
객체 자기 자신을 가리키는 포인터
객체의 값을 바꾸지 않고 읽기만 하는 마치 상수 같은 멤버 함수. 상수 함수 내에서는 객체들의 '읽기'만 수행되며, 상수 함수 내에서 호출 할 수 있는 함수로는 다른 상수 함수 밖에 없다.
<aside> 💡 // Const함수 (기존의 함수의 정의) const;
</aside>
#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();
}