1. Static Member Data and Functions
- 해당 클래스의 모든 객체가 메모리주소를 공유 → like global variable
- class 밖에서 초기화 해주기
2. Classe vs Structure
- structure은 default로 member를 public으로 생성
3. Virtual Function
가상함수를 사용하게 되면 부모 클래스에서 선언한 함수가 자식 클래스에서 재정의 될 수 있다고 알려주게 되어 기본 클래스 타입의 포인터 또는 참조를 통해 자식 클래스의 객체를 참조하여 해당 객체에 대한 함수를 실행할 수 있게 됨.
- 일반 virtual function: 부모 class에도 함수가 정의되어 있고 필요하다면 자식 class에서 변경가능
- pure virtual function: 자식 class에서 반드시 재정의해서 사용. 부모 class에서 함수 정의 X
class Human {
private:
int height;
int weight;
public:
virtual getHeight(){ // 일반 가상 함수
return height;
}
virtual getWeight() = 0; // 순수 가상 함수
4. Binding
바인딩(binding): 함수를 호출할 때 어떤 스코프에 속하는 함수인지 메모리를 할당하는 것
- Static binding: 일반적인 함수를 호출할 때에는 정적 바인딩이 됨. → 가상 함수가 아닌 모든 멤버 함수
- Dynamic binding: virtual function이 부모 class type의 포인터나 참조를 통해 호출될 때 Runtime에 함수들이 binding됨. 이를 dynamic binding이라고함.