Computer Security

#5 C++ 오버로딩 본문

프로그래밍/C++

#5 C++ 오버로딩

쿠리 Kuri 2022. 6. 16. 18:30

C++에서는 동일한 이름의 멤버 함수를 다양한 방식으로 활용하기 위해 오버로딩을 사용할 수 있다.

 

코드 예시

#include <iostream>
#include <string>

using namespace std;

class Person {
private:
	string name;
public:
	Person() { name = "홍길동"; }
	Person(string name) : name(name) { }
	void showName() { cout << "이름: " << name << '\n'; }
};
int main(void) {
	Person person1;
	person1.showName();
	Person person2("고동산");
	person2.showName();
	system("pause");
}

결과 값

위 코드를 보면 생성자가 있다하더라도,  매게변수가 서로 다르기 때문에, 서로 다른 경우의 따라 다른 값이 나온다.

 

 

C++의 연산자 오버로딩


C++은 연산자 오버로딩 문법을 활용해 연산자 또한 원하는 방식으로 수정하여 사용할 수 있다는 특징이 있다.

ex) 더하기(+)를 더하는 개념이 아닌 새로운 개념으로 수정해서 사용가능하다!


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); }
//operateor: 나는 +를 새로 정의 할꺼야~ 뭐로? 리턴 값 뜻 대로 하나의 Person객체에 적용
//(두 문자열을 더한값으로출력)
void showName() { cout << "이름: " << name << '\n'; }
};
int main(void) {
Person person1;
Person person2("고동산");
Person result = person1 + person2;
result.showName();
system("pause");
}

 

결과 값

 

 

 

이렇든 C++에서는 오버로딩을 이용해 동일한 이름의 함수들을 수정해서 사용 할 수 있다.

 

'프로그래밍 > C++' 카테고리의 다른 글

#7 정적멤버,상수멤버  (0) 2022.06.18
#6 C++ 프렌드  (0) 2022.06.17
#4 C++ 클래스 상속  (0) 2022.06.15
#3 C++ 생성자와 소멸자  (0) 2022.06.14
#2 C++의 클래스  (0) 2022.06.13
Comments