함수오버로딩 Fuction Overloading

동일한 이름의 함수를 여러개 만드는 것을 말한다.

 

매개변수 = parameter


일반적으로 들어오는 매개변수가 다른데 수행하는기능이 비슷한경우 사용한다.
전혀다른 기능을 수행할 수도 있긴하다.
반환형태가 달라도 이름이 같고 매개변수도 같으면 에러가 난다.
즉, 매개변수가 다르면 다른 함수로 판단한다.

매개변수가 없이 오버로딩하는 법은 반환값을 void로 선언하고 참조변수로 받는 방법이 있다.
단, 리턴받지않고 변수를 선언하고 인자로 넣어야하는 단점이 있다.

void add(int &a) {
	a = 30;
}


컴파일할때 어떤 함수를 사용할지 결정되어야한다.
또 인자를 정확히 표현해주어야한다.

	//double형
    cout << typeid(add(1.3, 1.5)).name() << " " << add(1.3, 1.5) << endl;
	//float 형
    cout << typeid(add(1.3f, 1.5f)).name() << " " << add(1.3, 1.5) << endl;

오버로딩 예

#include <iostream>

using namespace std;

void add(int &a) {
	a = 30;
}

int add(int x, int y) {
	return x + y;
}

int add(unsigned int x, unsigned int y) {
	return x + y;
}
double add(double x, double y) {
	return x + y;
}

float add(float x, float y) {
	return x + y;
}

int main()
{
	cout << typeid(add(1, 3)).name() << " " << add(1, 3) << endl;
	cout << typeid(add(1u, 3u)).name() << " " << add(1, 3) << endl;
	cout << typeid(add(1.3, 1.5)).name() << " " << add(1.3, 1.5) << endl;
	cout << typeid(add(1.3f, 1.5f)).name() << " " << add(1.3, 1.5) << endl;

	cout  << (unsigned int)'a' << endl;

	return 0;
}

오버라이딩

overriding

- 부모 클래스로 부터 상속받은 메소드를 자식클래스에서 다시구현한다.

- 자식클래스에서 입맛에 맞게 다시 구현

- 메소드에 파라미터,리턴타입은 부모,자식클래스이 같아야한다.

- 자식클래스에서 필요해의해 다양하게 수정하기 위해서이다.


오버로딩

overloading

- 같은 클래스안에서 이름이 같은 메소드를 말한다.

  - 이름은 같은 메소드지만 다양한 파라미터를 받아서 처리할때 사용한다.

- 파라미터가 달라야한다.

- 리턴타입은 같지않아도 된다.

+ Recent posts