- 순서
- 오버로딩이란?
- 오버라이딩이란?
- 오버로딩이란?
- 같은 이름의 함수를 매개변수 시그니처만 다르게 여러개 정의하는 것.
- 정적 바인딩을 통해서 바인딩 됨.
- 오버로딩
- 목적: 다양한 입력 값에 따라 같은 이름의 함수가 다른 동작을 하도록 하여 코드의 가독성과 재사용성을 높임
- 오버로딩의 조건
- 함수 이름은 동일해야함
- 매개변수의 타입이나 개수가 달라야함
- 반환 타입만 다른 것으로는 오버로딩이 허용되지 않음.
- 같은 클래스 내에서 발생함
- 오버라이딩이란?
- 상속 관계에서 부모 클래스의 가상 함수를 자식 클래스가 완전히 동일한 원형으로 재정의하여 부모의 기능을 변경하는 것.
- 동적 바인딩을 통해서 바인딩 됨.
- 오버라이딩의 조건
- 함수 이름, 매개변수의 타입 및 개수가 부모 클래스의 함수와 완벽히 동일해야 함.
- 주로 상속 관계에서 발생함
- 부모 클래스에서 가상 함수로 선언된 경우에 주로 사용되며, 자식 클래스에서 일를 재정의하여 다형성을 실현함.
- 추가 정보
- virtual 함수가 선언된 Base클래스를 상속받아 만들어진 파생 클래스에서 virtual 함수와 이름은 같지만 매개변수 시그니처가 다른 함수를 선언하면 이것은 오버로딩으로 볼 수 있을것인가?(단, virtual로 선언된 함수는 파생 클래스에서 오버라이딩 하지 않은 상황이라고 가정할 때)
- 해당 함수는 오버로딩처럼 보일 수 있지만, C++에서 상속받은 다른 시그니처 함수는 파생 클래스의 새로운 정의에 의해 숨겨지므로 오버로드 집합에 포함되지 않음. => 오버로드를 살리고 싶으면 using을 통하여 오버로딩처럼 동작함.
- virtual 함수가 선언된 Base클래스를 상속받아 만들어진 파생 클래스에서 virtual 함수와 이름은 같지만 매개변수 시그니처가 다른 함수를 선언하면 이것은 오버로딩으로 볼 수 있을것인가?(단, virtual로 선언된 함수는 파생 클래스에서 오버라이딩 하지 않은 상황이라고 가정할 때)
'C++' 카테고리의 다른 글
| [C++] 매크로 함수와 inline키워드 (0) | 2025.09.03 |
|---|---|
| [C++] 바인딩 (0) | 2025.09.03 |
| [C++] 가상 함수 (0) | 2025.09.03 |
| [C++]const 키워드 (0) | 2025.09.03 |
| [C++]static 키워드 (0) | 2025.09.03 |