아디봉의.net

C# 오버로딩(overloading) 본문

C#/C# 객체지향

C# 오버로딩(overloading)

아디봉 2012. 9. 20. 11:37

오버로딩(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

-반환형은 마음대로