함수 오버로딩
매개변수는 다르지만 동일한 이름의 멤버 함수를 여러 개 작성할 수 있는 기능이다.
1. 구현 방법
void Add()
{
}
void Add(string s1, string s2)
{
...~~~
}
void Add(int a, int b)
{
...~~~
}
함수 이름은 같지만 받는 매개변수가 다르다.
같은 이름의 함수를 호출하지만 상황에 따라 다른 결과를 얻어 낼 수 있다. 예를 들어 같은 기능이지만 매개변수 타입의 따른 다른 결과를 원할 때 사용하면 된다.
연산자 오버 로딩
기존의 제공하고 있는 연산자를 재정의하여 원하는 방식으로 수정하여 사용할 수 있다. 전역 함수나 클래스로 재정의도 가능하다.
1. 구현 방법
Student() { name = "ji"; }
Student(string name) :name(name) {}
Student operator + (const Student& other)
{
return Student(Student(name + " & " + other.name));
}
operator를 사용하여 '+'의 연산자를 재정의 한다.
Student st1;
Student st2("han");
Student result = st1 + st2;
'+'은 기본적으로 더한다라는 정의하지만 내가 만든 Student의 객체를 '+'한다는 의미는 컴파일러는 알지 못한다. 하지만 위에서 정의한 '+'의 기능을 정의하였기에 아래와 같은 결과를 볼 수 있다. 이런 기능을 사용하므로 코드의 길이를 줄일 수 있는 장점이 있다.
2. 규칙
연산자 오버 로딩의 규칙들이 있다.
기존의 있는 연산자만 가능하다 (새로운 연산자를 만들어 낼 수는 없음)
멤버 연산자(.), 범위 지정 연산자(::), 전처리기 연결(##)등의 몇몇 연산자는 불가능하다.
피연산자의 개수 규칙 등 기본적인 연산자의 규칙 등 기본적인 연산자의 규칙을 따라야 한다.
오버 로딩이 된 연산자 중 하나는 사용자 정의 자료형 이어야 한다.
'프로그래밍언어 > C++' 카테고리의 다른 글
C++) 클래스 상속, 오버라이딩 (0) | 2020.06.22 |
---|---|
C++) 생성자와 소멸자 (0) | 2020.06.10 |
C++)접근 제한자 (0) | 2020.06.09 |
C) 배열/문자열과 포인터. (0) | 2020.05.02 |
C) 파일 입출력 (FILE,fopen,fclose) (0) | 2020.05.02 |