C++/모두의코드

5장 // 5.3 뒷부분은 복습때

twoweeks-within 2025. 2. 1. 15:54

Overloading : 연산자들을 직접 정의 하는것

(리턴 타입) operator(연산자) (연산자가 받는 인자)

 

조심)

Complex& operator+(const Complex& c) {
  real += c.real;
  img += c.img;
  return *this;
}

>

Complex a = b + c + b;

 

(b.plus(c)).plus(b)

> 1. b.plus(c) == b+c 가 b의 값으로 들어감 (reference)

> 2. (b+c)+(b+c) 가 되어 다른 값이 나옴

 

friend 키워드

// B 는 A 의 친구!
friend class B;

// func 은 A 의 친구!
friend void func();

클래스 B와  func() 함수는 class A의 모든 변수와함수 접근가능

짝사랑..

 

이항연산자 정의

  : 자기자신을 리턴 > 멤버함수

                      그외 > 외부함수

   << 연산자

std::ostream& operator<<(std::ostream& os, const Complex& c) {
  os << "( " << c.real << " , " << c.img << " ) ";
  return os;
}

<< a <<    라고하면

// std::ostream& os: 출력 스트림 객체 (std::cout 등).

> " ( real문자열 , img문자열) " 형태로 출력 하게 해줌

 

타입변환 연산자

operator (변환 하고자 하는 타입) ()

 

후위,전위 증감자

Test operator++(int) {
    Test temp(*this);  // 현재 객체의 복사본 생성
    x++;               // 현재 객체의 값 증가
    std::cout << "후위 증감 연산자" << std::endl;
    return temp;       // 증가 전 상태의 복사본 반환
}

 

temp : 자기자신 복사본

  > return 을 temp로 함

 >> x++ 한게 반영되지는 않음

 

//5.3  C++ 스타일의 캐스팅

 

(원하는 캐스팅 종류)<바꾸려는 타입>(무엇을 바꿀 것인가?)

 

 

 

// 5.3 나머지는 복습때 학습하기

'C++ > 모두의코드' 카테고리의 다른 글

7장  (0) 2025.02.04
6장  (0) 2025.02.02
4장 이어서..  (0) 2025.01.31
3장, 4장  (0) 2025.01.30
1장  (0) 2025.01.29