Programing/C++
C++ 함수 오버로딩, 오버라이딩
live2skull
2016. 8. 1. 23:59
함수 오버로딩 (Overload)
C++ 에서는 같은 함수 이름으로 두 가지 이상의 정의를 갖는 것을 용인한다.
(같은 함수 이름으로 두 가지 이상의 함수 정의가 주어지는 거슬 함수 이름 오버로딩이라 부른다)
예제 코드
#include "stdafx.h"
#include "malloc.h"
#include "memory.h"
#include "string.h"
// Pre defined function. (used in main)
double ave(double n1, double n2);
double ave(double n1, double n2, double n3);
int main(int argc, char *argv[], char* envp)
{
printf("%.2f\n", ave(3, 5));
printf("%.2f\n", ave(3, 5, 9));
return 0;
}
double ave(double n1, double n2)
{
return ((n1 + n2)/2.0);
}
double ave(double n1, double n2, double n3)
{
return ((n1 + n2 + n3)/3.0);
}
! 구조체는 "typedef struct NAME" 또는 "struct NAME" 으로 선언할 수 있다.
다만 첫번째 방법으로 선언했을 때는 바로 이름을 변수처럼 이용해 변수를 만들 수 있으나,
두번째 방법으로 선언했을 때는 변수 타입 앞에 struct를 붙여 주어야 한다.
함수 오버라이딩 (Override - C++)
상위 클래스의 메서드를 재정의한다.
메서드의 이름은 물론 파라메터의 갯수나 타입도 동일해야 하며, 주로 상위 클래스의 동작을 상속받은 하위 메소드(함수)의 동작을 재정의하는데 사용한다.