참고 사이트
함수의 중복 정의
(넘겨주는 인자의 수 혹은 자료형에 따라 출력되는 결과가 다름)
1) 함수명이 같아야 한다.
2) 매개변수의 수가 다르거나, 아니면 그 매개변수의 수가 같고 자료형이 달라야만 한다.
3) 위의 두 조건을 모두 만족하면 반환형의 차이는 함수 오버로딩에 영향을 미치지 않는다.
함수의 재정의
즉, 부모 클래스와 자식 클래스의 상속 관계에서, 부모 클래스에 이미 정의된 함수를 같은 이름으로 자식 클래스에서 재정의하는 것을 의미
1) 오버라이드 하고자 하는 함수가 상위 클래스에 존재해야 한다.
2) 함수명이 같아야 한다.
3) 매개변수의 수와 자료형이 같아야 한다.
4) 함수의 리턴형이 같아야 한다.
5) 상위 메소드와 동일하거나 접근 범위가 넓은 접근 제한자를 사용해야 한다.
선언한 자료형으로 포인터가 고정되는 것이 아니라, 실제 가리키는 객체를 파악하고 해당 자료형으로 포인터를 바꾸어서 판단하도록 해주는 함수
virtual
키워드를 선언문 앞에다 붙이기
[예시]
public:
virtual void func() { std::cout << "가상 함수"; }
가상 함수가 실제로 가리키는 객체에 따라 실행 코드가 달라지고, 재정의할 수 있는 반면, 순수 가상 함수는 함수의 선언만 있고 정의가 없는 것으로, 자식 클래스에서 반드시 재정의하여 하는 함수
순수 가상 함수를 포함하는 클래스를 추상 클래스(abstract class)라고 부름
가상 함수에서 정의를 제외하고, 뒷부분에 =0;
을 덧붙여주기
[예시]
public:
virtual void func() = 0;