다형성은 여러 형태를 갖는 것을 의미하는 객체 지향 프로그래밍의 핵심 기능입니다. 이는 C++에서 컴파일 타임 다형성과 런타임 다형성으로 나뉩니다.
컴파일 시간 다형성의 예는 함수 오버로딩 또는 연산자 오버로딩입니다. 런타임 다형성의 예는 함수 재정의입니다.
C++에서 함수 오버로딩을 사용한 다형성의 예는 다음과 같습니다.
예시
#include <iostream> using namespace std; class Example { public : void func(int a) { cout << "\nThe value of a: " << a; } void func(int a, int b) { cout << "\nThe value of a: " << a; cout << "\nThe value of b: " << b; } void func(char c) { cout << "\nThe value of c: " << c; } }; int main() { Example obj; cout<< "\nOne int value"; obj.func(5); cout<< "\nOne char value"; obj.func('A'); cout<< "\nTwo int values"; obj.func(7, 2); return 0; }
출력
위 프로그램의 출력은 다음과 같습니다.
One int value The value of a: 5 One char value The value of c: A Two int values The value of a: 7 The value of b: 2
이제 위의 프로그램을 이해해보자.
클래스 Example의 func() 멤버 함수가 오버로드되었습니다. 필요에 따라 선택할 수 있는 다른 매개변수를 가진 3개의 func() 함수가 있습니다. 이에 대한 코드 스니펫은 다음과 같습니다.
class Example { public : void func(int a) { cout << "\nThe value of a: " << a; } void func(int a, int b) { cout << "\nThe value of a: " << a; cout << "\nThe value of b: " << b; } void func(char c) { cout << "\nThe value of c: " << c; } };
main() 함수에서 Example 클래스의 obj 객체가 생성됩니다. func() 함수는 함수 오버로딩을 보여주기 위해 다른 인수로 호출됩니다. 이에 대한 코드 스니펫은 다음과 같습니다.
int main() { Example obj; cout<< "\nOne int value"; obj.func(5); cout<< "\nOne char value"; obj.func('A'); cout<< "\nTwo int values"; obj.func(7, 2); return 0; }