7장. 연산자 다중 정의

2025. 3. 5. 21:24·SW개발/C++
반응형
  • 연산자 다중 정의: 기존 연산자를 클래스에 맞게 재정의하는 기능
  • 연산자 함수: operator 키워드를 사용하여 연산자 동작을 정의하는 함수
  • 연산자 다중 정의는 코드의 가독성을 높이고, 사용자 정의 타입을 더 자연스럽게 사용할 수 있도록 지원

7.1 연산자 함수란?

  • operator+, operator- 등의 형태로 연산자 정의 가능
  • 멤버 함수 또는 비멤버 함수로 정의 가능
  • 연산자 오버로딩 시 적절한 반환 타입과 매개변수를 설정해야 함
class Vector {
    int x, y;
public:
    Vector(int a, int b) : x(a), y(b) {}
    Vector operator+(const Vector& other) const {
        return Vector(x + other.x, y + other.y);
    }
};

7.2 단순 대입 연산자

  • operator=를 재정의하여 깊은 복사 수행 가능
  • 기본 대입 연산자는 얕은 복사를 수행
  • 동적 할당을 사용하는 경우 반드시 메모리 해제 후 새롭게 할당해야 함
class Example {
    int* data;
public:
    Example& operator=(const Example& other) {
        if (this != &other) {
            delete data;
            data = new int(*other.data);
        }
        return *this;
    }
};

7.3 함수 호출 연산자

  • operator()를 재정의하여 객체를 함수처럼 호출 가능
  • 람다 함수처럼 사용 가능하며, 함수 객체(Functor) 구현 시 유용
class Functor {
public:
    void operator()(int x) {
        cout << "Value: " << x << endl;
    }
};

7.4 배열 연산자

  • operator[]를 재정의하여 배열처럼 접근 가능
  • 읽기 전용 접근을 위해 const 버전도 제공해야 함
class Array {
    int data[10];
public:
    int& operator[](int index) { return data[index]; }
    const int& operator[](int index) const { return data[index]; }
};

7.5 관계 연산자

  • operator==, operator!=, operator< 등을 재정의하여 객체 비교 가능
  • 비교 연산자는 bool 타입을 반환하도록 설계
class Compare {
    int value;
public:
    bool operator==(const Compare& other) const { return value == other.value; }
};

7.6 단항 증감 연산자

  • operator++, operator--를 재정의하여 객체의 상태 변화 가능
  • 전위/후위 연산자 오버로딩 시 반환 방식 주의
class Counter {
    int count;
public:
    Counter& operator++() { ++count; return *this; } // 전위 증가
    Counter operator++(int) { Counter temp = *this; ++count; return temp; } // 후위 증가
};
반응형
저작자표시 비영리 변경금지 (새창열림)

'SW개발 > C++' 카테고리의 다른 글

8장. 객체 간 관계와 상속  (0) 2025.03.05
L-value와 R-value  (0) 2025.02.28
6장. 복사 생성자와 임시 객체  (0) 2025.02.26
5장. 클래스  (0) 2025.02.26
4장. 함수와 네임스페이스  (0) 2025.02.26
'SW개발/C++' 카테고리의 다른 글
  • 8장. 객체 간 관계와 상속
  • L-value와 R-value
  • 6장. 복사 생성자와 임시 객체
  • 5장. 클래스
코코도롱
코코도롱
    반응형
  • 코코도롱
    도롱이의 전자공학소
    코코도롱
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • AI (16)
        • 데이터 분석과 모델 학습 (4)
        • 모델별 정리 (7)
        • (PJT)음성 화자 분류 (4)
      • SW개발 (38)
        • C++ (9)
        • 면접을 위한 CS 전공지식 노트 (24)
        • Django+Vue.js (0)
        • 이런저런 개발이야기 (1)
        • 갑자기 C코테를 봐야할때 (2)
        • RPI5 프로젝트 (1)
        • 트러블슈팅 (1)
      • ESG (2)
        • 내가 쓰는 Assay (1)
        • 뉴스 스크랩 (1)
      • 반도체 (4)
        • 반도체 (3)
        • 슬기로운 학부생활 (1)
        • 회로 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    홉바이홉
    페이징 기법
    입출력관리
    홉바이홉통신
    정리본
    LAN
    멀티프로세스
    데이터분석 #머신러닝 #딥러닝 #데이터사이언스 #알고리즘 #데이터전처리
    보고서 수식
    파일입출력 #DataFrame불러오기
    CS지식
    word 수식
    전공 지식
    요약본
    c io
    데이터분석 #데이터전처리 #결측치 #머신러닝 #딥러닝 #Pandas #DataFrame
    반도체 공학
    c언어 입출력
    반도체 물성
    데이터전처리 #데이터분석 #딥러닝 #머신러닝 #Pandas #Numpy #Python
    공백포함입력받기
    면접을 위한 cs전공지식 노트
    MySQL
    os구조
    ESG
    반도체 소자 공학
    면접을 위한 CS 전공지식 노트
    메시지큐
    운영체제
    ios7계층
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코코도롱
7장. 연산자 다중 정의
상단으로

티스토리툴바