본문 바로가기
프로그래밍/C#

[C#] 연산자 오버로드

by 아임코딩 2023. 5. 12.
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