연산자오버로딩 9

8. 연산자 오버로딩 (10) - 첨자 연산자 오버로딩

Subscript([ ]) operator overloading◆ 첨자 연산자 오버로딩에서 고려해야 할 점 ● 첨자 연산자 오버로딩에서 배열에 대한 복사 생성 허용 여부의 결정이 필요 ☞ 허용하지 않고 싶을 경우 아래와 같이 해상 생성자를 private 선언 또는 delete로 접근 불가능하게 한다.private: Point* arr; int arr_len;public: PointArr(const PointArr &arr) {} // private 복사 생성자 PointArr& operator=(const PointArr &arr) {} // private 대입 연산자 혹은private: Point* arr; int arr_len;public: PointArr(const..

C++/C++ : Study 2025.06.22

8. 연산자 오버로딩 (9) - 첨자 연산자 오버로딩

Subscript([ ]) operator overloading◆ 첨자 연산자 오버로딩 ● [ ] 연산자 ● 멤버 함수로 오버로딩 필요 ☞ (복습) [ ] , ( ) , -> , = 와 같은 몇몇 연산자는 멤버 함수로만 오버로딩 가능 ● 경계 검사 등 기능 확장을 위해 용이하게 사용된다📘 첨자 연산자 오버로딩 (operator[])✅ 개요[] 연산자는 배열처럼 객체에 인덱스로 접근할 수 있게 해주는 연산자이다.obj[i] → obj.operator[](i) 로 해석된다.✅ 오버로딩 목적단순한 배열 접근뿐만 아니라,👉 경계 검사, 읽기/쓰기 분리, 로깅, 데이터 가공 등 기능 확장이 가능하다.특히 클래스 내부에서 포인터나 배열을 관리할 때 매우 유용하다.✅ 반드..

C++/C++ : Study 2025.06.22

8. 연산자 오버로딩 (8) - 대입 연산자 , 깊은 복사

중요한 Part이다.★★★★★Assignment Operator Overloading◆ 대입 연산자 오버로딩, 깊은 복사 ● C++는 대입 연산자를 자동 생성해 준다. ● 자동 생성된 대입 연산자는 얕은 복사를 수행한다 ● 포인터 타입의 멤버 변수가 존재하면, 깊은 복사를 통한 연산자 직접 정의 필요하다. ● 자동 생성된 대입 연산자는 얕은 복사를 수행한다 ● "복사 생성자" 내용 복습 ☞ 복사 생성자는 자동 생성된다. ☞ 자동 생성된 복사 생성자는 얕은 복사 수행한다. ☞ 포인터 타입의 멤버 변수가 존재하는 경우, 깊은 복사의 직접 정의가 필요하다.📘 복사 생성자와 대입 연산자: 구조와 개념의 유..

C++/C++ : Study 2025.06.21

8. 연산자 오버로딩 (7) - 대입 연산자 , 얕은 복사

중요한 Part이다.★★★★★Assignment Operator Overloading◆ 대입 연산자 오버로딩 ● C++는 대입 연산자를 자동 생성해 준다. ● 대입 연산과 복사 생성의 구분 ● 자동 생성된 대입 연산자는 얕은 복사를 수행 Point p1{ 10,20 }; Point p2{ 30,40 }; Point p3 = p1; // ** 대입이 아닌 복사 생성 p3.ShowPosition(); Point p4; p4 = p1; // * 대입 연산 p4.ShowPosition();📘 대입 연산자 오버로딩 (Assignment Operator Overloading)C++에서 대입 연산자 = 또한 오버로딩이 가능한 이항 연산자이다.하지만 이 ..

C++/C++ : Study 2025.06.20

8. 연산자 오버로딩 (5) - Ostream 객체

Stream Insertion and Extraction Overloading◆ 스트림 삽입 및 추출 연산자 오버로딩 Point p1{ 10,20 }; Point p2{ 30,40 }; p1.showPosition(); // [10,20] p2.showPosition(); // [30,40] // * 복잡한 멤버 함수 대신 cout > p3; // 50 60 // * 기본 자료형처럼 stream 입력도 가능하도록 한다.🔹 기존 방식: 출력 전용 함수 사용지금까지 객체의 좌표 값을 확인하려면 ShowPosition()과 같은 멤버 함수를 따로 정의하여 호출했다.이 방식은 기본적인 접근이지만 매번 함수를 호출해야 하고, std::cout과 직접 연결되지 않아 불편하다..

C++/C++ : Study 2025.06.16

8. 연산자 오버로딩 (4) - 전역 함수로의 구현

Binary operator, as Global Function◆ 이항(binary) 연산자의 전역 함수로의 선언 (+, -, ==,!=, > , ● Operator 오버로딩을 전역 함수로 선언(Point::operator 가 아님!) ● Lhs 도 매개변수로써 전달 ☞ 이러한 구현을 위해서는 함수를 friend로 선언하는 것이 일반적 Point operator+(const Point& lhs, const Point& rhs); Point operator-(const Point& lhs, const Point& rhs); Point operator==(const Point& lhs, const Point& rhs); Point operator이러한..

C++/C++ : Study 2025.06.15

8. 연산자 오버로딩 (3) - 단항 연산자 오버로딩 멤버 함수로의 구현

Unary operator, as Member Function◆ 단항(Unary) 연산자의 멤버 함수로의 선언 ( ++ , -- , -,!) ● 선언 형태 Point operator-() const; Point operator++(); // pre-increment Point operator++(int); // post-increment bool operator!() const; ● 사용 예시 Point p1{ 10,20 }; Point p2 = -p1; // p1.operator-(); p2 = ++p1; // p1.operator++(); p2 = p1++; // p1.operator++(int);✅ 단항 연산자 오버로딩 정리🔹 단항 연산자란?..

C++/C++ : Study 2025.06.10

8. 연산자 오버로딩 (2) - 이항 연산자 오버로딩 멤버 함수로서의 구현

Operator Overlading◆ 연산자 오버로딩 : 클래스에 대한 연산자의 적용 방식을 사용자가 직접 오버로딩하여 구현할 수 있다.◆ 멤버 한수인 연산자 오버로딩◆ 전역 함수인 연산자 오버로딩◆ 스트림 삽입 및 추출 연산자 오버로딩◆ 대입 연산자 오버로딩◆ 첨자 연상자 오버로딩연산자 오버로딩에는 두 가지 방법이 있다. 멤버 함수로 정의하는 방법과 전역 함수(비멤버 함수)로 정의하는 방법이다. 이 두 가지 방식을 잘 구분하여 기억해 두자.Operator Overlading as Member Function◆ 이항(binary) 연산자의 멤버 함수로의 선언 (+, - , ==,!= , > , ● 선언 형태 Point operator+(const Point& rhs) const;..

C++/C++ : Study 2025.06.09

8. 연산자 오버로딩 (1) - 소개

◆ 연산자 오버로딩이번 연산자 오버로딩 강의가 재미있는 이유 1. 지금 까지 배운 내용을 종합적으로 이해를 해야 코드를 이해할 수 있다. 퍼즐 푸는 것처럼 능력을 테스트할 수 있는 기회이다. 2. 굉장히 C++ 의 특화된 기능이다 Java는 연산자 오버로딩이 없다. C++을 배우고 연산자 오버로딩을 할 줄 알면 좋다. 어려울 수도 , 재미있을 수도 있으나 재미있으면 좋겠다. 이 강의가 재밌으려면 지난 강의들이 다 이해가 되어야 할 수 있다.Operator Overlading◆ 연산자 오버로딩◆ 멤버 함수인 연산자 오버로딩 ◆ 전역 함수인 연산자 오버로딩 ◆ 스트림 삽입 및 추출 연산자 오버로딩 ◆ 대입 연산자 오버로딩 ◆ 첨자 연상자 오버로딩강의 순서는 개요부터 시작한다. 연산자 오버로딩을 ..

C++/C++ : Study 2025.06.08