Coding Test/C++ 기초

[C++ 기초] 오버로딩

seoyamin 2022. 8. 11. 07:32

1. 오버로딩 vs. 오버라이딩

  오버로딩 (overloading) 오버라이딩 (overriding)
개념 동일한 이름의 함수를 중복 정의 상속 받은 함수를 재정의
제한 조건    1. 메소드명 동일
   2. 메소드 원형하나 이상 달라야 함
   3. 메소드 리턴 타입 동일 여부 상관 X
   1. 메소드명 동일
   2. 메소드 원형 모두 동일
   3. 메소드 리턴 타입 동일

* 메소드 원형 : parameter 개수, 자료형

 

 

2. 오버로딩

2-1. 오버로딩이란 ?

오버로딩이란 동일한 이름의 함수를 중복 정의한다는 개념이다. 컴파일러는 사용된 함수의 매개변수 개수나 자료형을 구분하여 자동으로 어떤 함수를 호출해야 하는지 결정한다.

따라서 오버로딩은 하나의 함수에 여러 형태를 부여하는 다형성(polymorphism)을 갖는다.

 

#include <iostream>

using namespace std; 

int myFunc(int i) {    
	return i + 1;
}

char myFunc(char c) {    
	return c + 1;
}

double myFunc(double d) {    
	return d + 1.5;
}  


int main(void) {    
	int a = 3;    
	char b = 'k';    
	double c = 2.5;     

	cout << myFunc(a) << endl;    
	cout << myFunc(b) << endl;    
	cout << myFunc(c) << endl;     
	
	return 0;
}

 

 

2-2. 오버로딩이 불가능한 경우

① return 타입만 다른 두 함수

 

void myFunc(int i) { }

char myFunc(int i) {
	return 'a';
}

 

② parameter 개수/데이터 타입이 동일한 static 함수

 

static void myFunc(int i) {}     

void myFunc(int i) {}

 

③ parameter 차이가 배열 vs 포인터 형태인 함수들

 

void myFunc(int *a) {}     

void myFunc(int a[]) {}