C++
오버로딩
khon98
2020. 12. 15. 17:48
함수 오버로딩
- 동일한 이름의 멤버 함수를 다양한 방식으로 활용하기 위해서 오버로딩을 사용할 수 있음
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
class Person {
private:
string name;
public:
Person() { name = "임꺽정"; } // 매개 변수가 없을때는 멤버 변수인 name의 값으로 임꺽정을 넣음
Person(string name): name(name) {} // 그렇지 않고 매개 변수가 존재하는 경우 그 이름 값으로 그대로 초기화를 진행
void showName() { cout << "이름: " << name << '\n'; }
};
int main(void) {
Person person1;
person1.showName();
Person person2("khon");
person2.showName();
system("pause");
return 0;
}
연산자 오버로딩
- 연산자 오버로딩 문법을 활용해 연산자 또한 원하는 방식으로 수정하여 사용할 수 있다는 특징이 있음
- 기존에 존재하는 연산자만 정의할 수 있음(+ - * /)
- 멤버 연산자(.), 범위 지정 연산자(::) 등의 몇몇 연산자는 오버로딩 처리할 수 없음
- 피연산자의 개수 규칙 등 기본적인 연산자의 규칙을 따라야 함
- 오버로딩이 된 연산자의 피연산자 중 하나는 사용자 정의 자료형이어야만 함
#include <iostream>
#include <string>
#include <stdio.h>
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("khon");
Person result = person1 + person2;
result.showName();
system("pause");
return 0;
}
- 함수 오버로딩을 통해서 동일한 이름의 함수를 약간씩 변형하여 사용할 수 있음
- C++에서는 자주 이루어지는 특정한 계산을 연산자 오버로딩을 통해서 정리할 수 있음