안녕하세요!
이번 글에서는 함수 오버로딩과 함수 오버라이딩의 차이점에 대해 다뤄 보겠습니다.
함수 오버로딩(Function Overloading)과 함수 오버라이딩(Function Overriding)은 객체 지향 프로그래밍에서 다형성을 구현하는 방법입니다. 이 두 개념은 이름이 비슷하지만 목적과 동작 방식에 차이가 있습니다. 이제 함수 오버로딩과 함수 오버라이딩의 차이를 자세히 알아보겠습니다.
<함수 오버로딩 (Function Overloading)>
함수 오버로딩은 같은 이름의 함수를 여러 개 정의하는 것을 의미합니다. 다른 매개변수 리스트를 가지는 여러 함수를 동일한 이름으로 정의하여 사용자에게 다양한 인터페이스를 제공할 수 있습니다. 함수 오버로딩은 다음과 같은 특징을 가집니다.
- 매개변수의 타입 또는 개수가 다른 함수 정의 : 함수 오버로딩을 사용하면 매개변수의 타입이나 개수가 다른 여러 개의 함수를 동일한 이름으로 정의할 수 있습니다.
- 호출 시 인자의 타입과 개수에 따라 적절한 함수 선택 : 함수를 호출할 때 전달되는 인자의 타입과 개수에 따라 컴파일러가 적절한 함수를 선택합니다.
- 반환 타입은 함수 오버로딩에 영향을 주지 않습니다 : 함수 오버로딩은 매개변수의 타입과 개수만을 고려하므로 반환 타입은 함수 오버로딩에 영향을 주지 않습니다.
<함수 오버라이딩 (Function Overriding)>
함수 오버라이딩은 상위 클래스에서 이미 정의된 함수를 하위 클래스에서 재정의하는 것을 의미합니다. 함수 오버라이딩을 사용하면 하위 클래스에서는 상위 클래스의 동일한 이름과 시그니처를 가진 함수를 다시 정의하여 자신에게 맞게 동작하도록 할 수 있습니다. 함수 오버라이딩은 다음과 같은 특징을 가집니다.
- 상속 관계 : 함수 오버라이딩은 상위 클래스에서 하위 클래스로의 상속 관계가 필요합니다. 하위 클래스는 상위 클래스의 멤버 함수를 재정의할 수 있습니다.
- 동일한 시그니처 : 함수 오버라이딩된 함수는 상위 클래스의 함수와 동일한 이름과 시그니처를 가져야 합니다.
- 가상 함수(Virtual function) : 함수 오버라이딩은 가상 함수를 사용하여 구현됩니다. 가상 함수를 선언하면 런타임 시에 객체의 실제 타입에 따라 적절한 함수가 호출됩니다.
- 다형성 : 함수 오버라이딩을 통해 다형성을 구현할 수 있습니다. 동일한 함수 호출문이 상황에 따라 다른 클래스의 오버라이딩된 함수를 호출할 수 있습니다.
<함수 오버로딩과 함수 오버라이딩의 차이 요약>
함수 오버로딩은 같은 이름의 함수를 매개변수의 타입 또는 개수에 따라 다르게 정의하는 것입니다. 호출 시 인자의 타입과 개수에 따라 적절한 함수를 선택합니다.
함수 오버라이딩은 상속 관계에서 상위 클래스의 함수를 하위 클래스에서 재정의하는 것입니다. 동일한 이름과 시그니처를 가진 함수를 재정의하여 자신에게 맞게 동작하도록 합니다. 가상 함수를 사용하여 동작합니다.
함수 오버로딩과 함수 오버라이딩은 다형성을 구현하는 데 중요한 역할을 합니다.
함수 오버로딩은 다양한 인터페이스를 제공하고 코드의 가독성을 높이는 데 도움을 주며, 함수 오버라이딩은 상속 관계에서의 동적인 함수 호출과 다형성을 실현하는 데 사용됩니다.
감사합니다!
'[C++] > 프로그래밍 기초' 카테고리의 다른 글
[C++] 프로그래밍 기초 : 포인터 연산 (49) | 2023.06.12 |
---|---|
[C++] 프로그래밍 기초 : 열거형 (33) | 2023.06.12 |
[C++] 프로그래밍 기초 : 클래스와 구조체의 차이 (24) | 2023.06.08 |
[C++] 프로그래밍 기초 : 재귀함수 (7) | 2023.06.07 |
[C++] 프로그래밍 기초 : 깊은 복사와 얕은 복사 (34) | 2023.06.05 |