오버로딩이란?
이름이 함수 함수 여러개가 있을때, 각각의 함수가 받는 매개 변수에 따라 다른 방식으로 처리하게 도와준다.
쉽게 말해 다른기능을 함수를 같은이름, 다른 매게 변수로 지정하는 것을 의미합니다.
연산자 오버로딩
위에서 설명한 오버로딩기능을 연산자에도 적용시킨것
객체에 직접 *,+ 연산자를 사용하게 하는용도로 쓰입니다.
예를들어 +,* 는 int 형이나 실수형을 매개 변수로 받은후, int 와 실수형을 리턴시킨다
이 +,* 를 오버로딩하여 직접만든 Time 이라는 객체에 적용시키는 오버로딩 함수를 만들어보겠습니다.
이러한 Time 이라는 클래스가 존재할때
이렇게 매서드를 정의하면
이렇게 각각 정의된 함수를 더하는 매서드를 사용하게됩니다.
(위의출력값)
이 매서드를 + 연산자 오버로딩을 통해서 Time+ Time 형식으로 만들어보겠습니다
operator +(연산자기호) 를통해 선언
메서드 이름역시 operator+ 로 바꿔줍니다.
이후 + 로서 TIme 객체들을 더할수있게 됩니다.
(출력값)
곱셈 연산자도 마찬가지로 만들어줬습니다.
이런식으로 쓰이겠지만 만약에 곱셈의 형질상 앞뒤가 바뀐다면
이렇게 에러가 나면서 메서드가 사용되지않습니다. 연산자 오버로딩은 앞전의 항의 매서드로 뒷항을 매개변수로 이용하기 때문입니다.
이것을 프랜드 함수로써 해결할수있습니다
클래스 선언부에 같은 이름의 operator 연산자를 놓고 리턴에 다시 기존연산자를 리턴시킵니다.
프랜드함수 오버로딩을 통해 매서드가 적용되는모습
'Stack > C++' 카테고리의 다른 글
C++ 포인터란? (0) | 2023.01.26 |
---|---|
C++ continue 구문 (0) | 2023.01.26 |
C++ Switch 구문 (0) | 2023.01.26 |
C++ 구조체(struct),공용체(union),열거체(enum) (0) | 2023.01.20 |
C++ 입문 기초지식 (0) | 2023.01.17 |