[c++] 연산자 오버로딩을 통한 문자열 처리
C++에서 연산자 오버로딩은 사용자 정의 타입에 대해 연산자 동작을 정의하는 강력한 기능입니다. 문자열 처리를 위해 연산자 오버로딩을 사용하여 사용자 정의 문자열 타입을 생성하고 문자열 간의 연산을 쉽게 수행할 수 있습니다.
연산자 오버로딩이란?
연산자 오버로딩은 C++에서 기본 연산자(+, -, *, / 등)의 동작을 사용자 정의 타입에 대해 재정의하는 것을 말합니다. 이를 통해 사용자 정의 타입에 대한 연산을 가능하게 하고, 다양한 유형의 데이터에 대한 연산을 간단하게 만들 수 있습니다.
문자열 처리를 위한 연산자 오버로딩
문자열 처리를 위해 연산자 오버로딩을 사용하면 문자열 간의 연산이 더 직관적이고 간단해집니다. 예를 들어, 두 개의 사용자 정의 문자열 타입을 더하는 연산을 생각해보겠습니다.
다음은 연산자 오버로딩을 사용하여 두 개의 문자열을 더하는 경우의 예시 코드입니다.
#include <iostream>
#include <cstring>
class MyString {
private:
char* buffer;
public:
MyString(const char* initialInput) {
if (initialInput != NULL) {
buffer = new char[strlen(initialInput) + 1];
strcpy(buffer, initialInput);
} else {
buffer = NULL;
}
}
~MyString() {
if (buffer != NULL) {
delete[] buffer;
}
}
// 연산자 오버로딩
MyString operator+ (const MyString& addThis) {
if (addThis.buffer != NULL) {
char* newBuffer = new char[strlen(buffer) + strlen(addThis.buffer) + 1];
strcpy(newBuffer, buffer);
strcat(newBuffer, addThis.buffer);
MyString newString(newBuffer);
delete[] newBuffer;
return newString;
} else {
return *this;
}
}
const char* GetString() {
return buffer;
}
};
int main() {
MyString hello("Hello, ");
MyString world("world!");
MyString result = hello + world;
std::cout << result.GetString() << std::endl;
return 0;
}
위의 예시 코드에서 +
연산자가 오버로딩되어 두 개의 MyString
객체를 이어붙이는 동작을 정의하고 있습니다.
결론
C++의 연산자 오버로딩을 사용하여 문자열 처리를 더 편리하고 직관적으로 만들 수 있습니다. 사용자 정의 문자열 타입을 생성하고 연산자 오버로딩을 통해 다양한 문자열 연산을 정의하여, 더 많은 기능을 제공할 수 있습니다.
참고문헌: