아디봉의.net
C# 오버로딩(overloading) 본문
오버로딩(overloading)이란?
함수의이름은 하나만 주고 매개변수를 다르게 함으로써 함수를 여러개 만드는 것을 말함,
보통 다중정의, 중복함수라고 부르며 일반적으로 오버로딩이라고 한다.
생성규칙
- 반드시 매개변수의 개수와 매개변수의 형이 달라야 한다.
ex)
public int plus(int a, int b){,,,}
public float plus(float a, float b){,,,}
public double plus(double a, double b){,,,}
매개변수의 형과 개수는 컴파일러가 함수의 이름을 다르게 부여하기 위한 함수의 구분자가 되는 것이다.
오버로딩(overloading)을 사용하는 이유
- 해당 클래스의 함수를 사용할 떄 사용자의 편리를 위해서
- 함수의 이름 하나로 여러 가지 작업에 대처할 수 있기 때문
예)
using System;
public class OverloadCalc
{
public int Plus(int a, int b)
{
return(a+b)
}
public float Plus(float a, float b)
{
return(a+b)
}
public double Plus(double a, double b)
{
return(a+b)
}
public static void Main()
{
OverloadCalc oc = new OverloadCalc();
int i = oc.Plus(3,5) ;
float j = oc.Plus(0.1f,0.2f) ;
double k = oc.Plus(0.5, 0.7) ;
Console.WriteLine("int 합:{0}",i);
Console.WriteLine("float 합:{0}",j);
Console.WriteLine("double 합:{0}",k);
}
}
결과값 : int합 =8, float합 =0.3, double합 = 1.2
연산자오버로딩 (operator Overloading)
오버로딩은 하나의 이름으로 여러 개의 함수를 만드는 기법이다. 그리고 연산자 오버로딩이란 하나의 연산자에 여러 가지 연산 기능을 부여하는 기법을 말한다.
+ 연산자로 더하기 연산을 한다고 가정하자. 일반적인 수는 쉽게 더할 수 있지만, 객체를 더해야 한다고 가정할때 수의 경우에는 쉽게 연산이 되지만 객체들 끼리는 불가능하다.
객체끼리의 더하기 연산기능을 하나더 부여 할 수 있는 기술이 바로 연산자 오버로딩이다.
예) using System;
class Top{
public int a = 0;
public int b = 0;
public Top(int a, int b){
this.a = a;
this.b = b;
}
public static Top operator+(Top t1, Top t2){
int m = t1.a + t2.a;
int n = t1.b + t2.b;
return new Top(m, n);
}
}// class
class OperOverloadTestMain{
public static void Main(){
Top s1 = new Top(3, 5);
Top s2 = new Top(7, 16);
Top s3 = s1 + s2 ;
Console.WriteLine("a의값의 합은"+s3.a+"입니다.");
Console.WriteLine("b의값의 합은"+s3.b+"입니다.");
}//main
}//class
결과값 :
a값의 합은 10입니다.
b값의 합은 21입니다.
연산자 오버로딩(Overator Overloading)의 특징
-무조건 public
-무조건 static
-반환형은 마음대로
'C# > C# 객체지향' 카테고리의 다른 글
c#객체지향 생성자(Constructor) (0) | 2012.09.25 |
---|---|
C# 상속 (0) | 2012.09.20 |
C# 객체 (0) | 2012.09.03 |
C# 코딩 연습, 객체의 상속과 포함 (이벤트 코드 생성기의 HistoryManager 클래스의 소스 분석을 겸하여) (0) | 2012.09.03 |
C# 코딩 연습, 분할 정복과 이벤트 (0) | 2012.09.03 |