728x90
반응형
안녕하세요 아임코딩입니다
이번에는 연산자 오버로드를 알아보겠습니다.
연산자 오버로드
연산자 오버로드는 연산자를 재정의하는 것을 의미합니다.
문법
public static [반환 자료형] operator 연산자 (타입1 변수1, 타입2 변수2)
{
//반환 자료형 반환
}
예시
class Point
{
private int x;
private int y;
public static Point operator +(Point a, Point b)
{
return new Point(a.x + b.x, a.y + b.y);
}
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public void Print()
{
Console.WriteLine("x : " + x + ", y : " + y);
}
}
Point 클래스와 Point 클래스 안에서 + 연산자를 재정의한 메서드입니다
Point 클래스는 x 와 y 필드를 갖습니다.
Point 클래스 객체 두 개를 더하는 + 연산자를 재정의했습니다.
반환은 new Point(x좌표의 합, y좌표의 합) 으로 했습니다.
전체 코드
using System;
namespace Tistory
{
internal class Program
{
class Point
{
private int x;
private int y;
public static Point operator +(Point a, Point b)
{
return new Point(a.x + b.x, a.y + b.y);
}
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public void Print()
{
Console.WriteLine("x : " + x + ", y : " + y);
}
}
static void Main(string[] args)
{
Point p1 = new Point(10, 20);
Point p2 = new Point(1, 2);
Point p3 = p1 + p2;
p3.Print();
}
}
}
Main 함수에서 살펴보면
Point p3 = p1 + p2로 Point 클래스 객체 2개를 더해서 p3에 저장하는 것을 확인할 수 있습니다.
연산자 오버로드를 하면 클래스에 정의되지 않은 연산자에 대해서 정의할 수 있습니다.
728x90
반응형
'프로그래밍 > C#' 카테고리의 다른 글
[C#] 속성 (get set 메서드) (0) | 2023.05.12 |
---|---|
[C#] 정적 메서드 static method (0) | 2023.05.12 |
[C#] 정적 필드 static field (0) | 2023.05.12 |
[C#] 생성자 (0) | 2023.05.12 |
[C# 문제풀이] 백준 2439 번 별찍기 (0) | 2023.05.11 |