함수 오버로딩

매개변수는 다르지만 동일한 이름의 멤버 함수를 여러 개 작성할 수 있는 기능이다. 

 

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

+ Recent posts