반응형
📌 요약: 연산자 재정의 | 멤버 함수 vs 전역 함수 | 체이닝 기법 | StringBuilder 활용 예제
🔁 연산자 재정의 (Operator Overloading)
C++에서는 사용자 정의 타입에 대해 연산자 기능을 확장할 수 있습니다. 연산자 재정의를 통해 클래스 간의 연산을 직관적으로 구현할 수 있습니다.
✅ 기본 형식
// 멤버 함수 방식
반환형 클래스이름::operator연산자기호(매개변수) { ... }
// 전역 함수 방식
반환형 operator연산자기호(매개변수1, 매개변수2) { ... }
예를 들어, 벡터(Point) 구조체에서 + 연산자를 재정의하면 두 포인트를 더하는 연산을 직접 구현할 수 있습니다.
🧩 멤버 함수 방식 예제
struct Point
{
float x, y;
Point(float x, float y) : x(x), y(y) {}
Point operator+(const Point& other)
{
return Point(this->x + other.x, this->y + other.y);
}
};
🌐 전역 함수 방식 예제
Point operator-(const Point& left, const Point& right)
{
return Point(left.x - right.x, left.y - right.y);
}
이처럼 전역 함수로도 연산자 재정의가 가능하며, 클래스 외부에서도 유연하게 사용할 수 있습니다.
⛓️ 연산자 체이닝 (Operator Chaining)
Append 함수가 *this를 반환하면 여러 메서드를 이어서 호출할 수 있습니다. 이를 체이닝이라 하며, 코드를 간결하게 만들 수 있습니다.
✅ 클래스 정의
class StringBuilder
{
char buffer[2048];
int curIndex = 0;
public:
StringBuilder& Append(const char* text)
{
int index = 0;
while (text[index] != '\0')
{
buffer[curIndex++] = text[index++];
}
buffer[curIndex] = '\0';
return *this;
}
string ToString() { return buffer; }
};
📌 사용 예:
StringBuilder sb;
sb.Append("IP : ").Append("8.8.8.8").Append(" Port : ").Append("5555");
cout << sb.ToString();
결과는 다음과 같습니다:
IP : 8.8.8.8 Port : 5555
📦 실제 예제 실행 결과
sb result : IP : 8.8.8.8 Port : 5555 ID : admin PASS : 1234
이처럼 StringBuilder와 체이닝 방식을 활용하면 포맷팅 문자열을 직관적으로 연결할 수 있습니다.
반응형
'C++ > 기본' 카테고리의 다른 글
| [C++] 6. 포인터 (0) | 2025.03.29 |
|---|---|
| [C++] 5. 함수 (0) | 2025.03.29 |
| [C++] 4. 반복문 (0) | 2025.03.29 |
| [C++] 3. 조건문 (0) | 2025.03.29 |
| [C++] 2. 연산자(1) (0) | 2025.03.29 |