본문 바로가기
Coding Test/C++ 기초

[C++ 기초] 오버로딩

by seoyamin 2022. 8. 11.

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[]) {}

 

 

'Coding Test > C++ 기초' 카테고리의 다른 글

[C++ 기초] 템플릿  (0) 2022.08.18
[C++ 기초] 상속  (0) 2022.08.03
[C++ 기초] 클래스  (0) 2022.08.03
[C++ 기초] 포인터  (0) 2022.07.20
[C++ 기초] 배열  (0) 2022.07.20