Overloading

오버로딩(Overloading)
함수 오버로딩
함수 오버로딩을 통하여 매개변수의 종류에 따라서 다른 생성자를 실행할 수 있다.
#include <iostream>
#include <string>
using namespace std;
class Person{
private:
string name;
public:
Person(){ name=""; } // 1
Person(string name) : name(name) {} //2
void showName(){cout<<": "<<name<<'\n';}
};
int main(void){
Person person1;
person1.showName();
Person person2("");
person2.showName();
system("pause");
return 0;
}
연산자 오버로딩
오버로딩 문법을 통해서 연산자 또한 원하는 방식으로 수정하여 사용할 수 있다.

1) 기존에 존재하는 연산자만 정의할 수 있다.
2) 멤버 연산자(.), 범위 지정 연산자(::) 등의 몇몇 연산자는 오버로딩 처리할 수 없다.
3) 피연산자의 개수 규칙 등 기본적인 연산자의 규칙을 따라야 한다.
4) 오버로딩이 된 연산자의 피연산자 중 하나는 사용자 정의 자료형 이어야만 한다.
#include <iostream>
#include <string>
using namespace std;
class Person{
private:
string name;
public:
Person(){ name=""; }
Person(string name):name(name){}
Person operator +(const Person& other){ return Person(name +" & "+other.name);}
void showName() {cout<<": "<<name<<'\n';}
};
int main(void){
Person person1;
Person person2("");
Person result=person1+person2;
result.showName();
system("puase");
}

이름: 임꺽정 & 최정훈

C++에서는 이와 같이 함수 오버로딩을 통해서 동일한 이름의 함수를 약간씩 변형하여 사용할 수 있다.
C++에서 자주 이루어지는 특정한 계산을 연산자 오버로딩을 통해서 정리할 수 있다.