Home C++ 개념 정리 : 연산자 오버로딩, 타입 변환
Post
Cancel

C++ 개념 정리 : 연산자 오버로딩, 타입 변환

연산자 오버로딩

  • 다음 연산자에 대해 사용자가 재정의하여 사용할 수 있다.
    • 산술 연산자 : +, -, *
    • 약형 연산자 : +=, -=
    • 비교 연산자 : >=, ==
    • 논리 연산자 : &&||
    • 멤버 선택 연산자 : ->*
    • 증감 연산자 : ++, --
    • 기타
      • 배열 연산자 : []
      • 함수 호출 연산자 : ()
  • 방법

    1
    
    (리턴 타입) operator(연산자) (연산자가 받는 인자)
    
  • 예시

    1
    
    bool operator==(MyString& str);
    
  • 사칙연산의 경우 레퍼런스가 아닌 값을 리턴해야함.

friend 키워드

  • 개념
    • friend 키워드로 정의한 클래스나 함수는 기존 클래스의 private 변수나 함수에 접근이 가능.
      • 일반적으로는 private으로 정의된 멤버는 해당 객체의 public 멤버 함수를 통해서만 접근이 가능
    • 특징
      • 지정한 대상에 한해 해당 객체의 모든 멤버에 접근할 수 있는 권한을 부여함.
      • 이항 연산자를 오버로딩할 때 주로 사용됨.
  • 선언 방법

    1
    
    friend 클래스이름 함수이름(매개변수목록);
    

Wrapper 클래스

  • 기본 자료형(int, float 등)을 클래스로 포장해서 각각의 자료형을 객체로 사용하는 것
  • 타입 변환 연산자 정의 방법

    1
    
    operator (변환 하고자 하는 타입) ()
    
  • 사용 예시

    1
    
    operator int()
    

C++ 타입 변환 (type conversion)

타입 변환의 종류

  • static_cast : 일반적인 변환
  • const_cast : 객체의 상수성(const)을 없애는 변환
  • dynamic_cast : 파생 클래스 사이에서의 다운 캐스팅
    • 업캐스팅 vs 다운캐스팅?
      • 업캐스팅(upcasting)
        • 자식 클래스가 부모 클래스 타입으로 캐스팅
        • 캐스팅 연산자 괄호 생략 가능
        • 자식 클래스에서만 있는 속성과 메서드는 사용 불가능
      • 다운캐스팅(downcasting)
        • 부모 클래스가 자식 클래스 타입으로 캐스팅
        • 캐스팅 연산자 괄호 생략 불가능
        • 업캐스팅한 객체를 다시 자식 클래스 타입의 객체로 되돌리 위해 사용함.
  • reinterpret_cast : 서로 관련이 없는 포인터들 사이의 변환

방법

  • (원하는 캐스팅 종류)<바꾸려는 새로운 타입>(바꿀 대상)

예시

  • static_cast<int>(float_variable);
    • static_cast 를 통해 float 타입의 float_variable 변수를 int로 변환
This post is licensed under CC BY 4.0 by the author.

NetPractice ① Subject

NetPractice ② 배경 지식