U E D R , A S I H C RSS

미시Cpp/0406 (rev. 1.8)

미시Cpp/0406

연산자 오버로딩을 발동합니다
템플릿 은하계까지 남은 시간 : 1주

1. 미시Cpp

회차 : 4회차
시간 : 11시 30분 ~
장소 : 6층 학회실

1.1. 참가원

멘토 장용운 미시행
멘티 유재범 미시행
신형철 미시행

1.2. 이번에 배울 것

  • 연산자 오버로딩
    ○ 종류
    ○ 선언과 정의
    ○ 비 메서드적 연산자 오버로딩
  • std::cout, std::cin, std::endl
  • []연산자 오버로딩
  • 대입 연산자 오버로딩
  • ★(C++11)RValue reference
  • ★(C++11)Move semantics
    ○ Move constructor
    ○ Move assignment operator

실습
  • 체스 프로그램 클래스 디자인
    ○ 기능 명세
    ○ 구조 디자인
    ○ 프로토타입

2. 스터디 진행

2.1. 내용


  • Feature
    • Chess Rule
    • 2-Player-Played
    • Console UI
    • FIle I/O

  • 연산자 오버로딩

    class A{
          friend A& operator=; //4번
          
          A& operator=(int n){
                
          }//1번
    
          A& operator=(class A&){
                
          }//2번
    };
    
    A& operator=(int n, class A&){
                
          }//3번
    
    

  • 1번
    • 2항 연산의 뒷부분 피 연산자가 숫자일 경우
  • 2번
    • 2항 연산의 뒷부분 피 연산자가 자기 자신(같은 형식)일 경우
  • 3번
    • '3+a'와 같은 앞부분 피 연산자가 객체일 경우, 1번 식을 선언 함으로써 사용
  • 4번
    • friend를 이용해 3번의 전역 함수를 friend로 선언해 줘야 사용 가능
  • 생성자(소멸자), 복사 생성자, 대입 연산자 오버라이딩 메소드는 C++가 만드므로 항상 조심해줘야 하며 항상 확인해야 한다.
    • 스테이크를 시켰더니 스테이크 제료가 나왔다. 근데 왠지 레스토랑에서 제공한 소스가 상한 것 같아 열어보니 상해 있다...랄까

  • Rvalue
    • Lvalue : 값을 대입하고 쓰는 데 의미가 있어야 한다
    • Rvalue : 이름이 없다. 고로 의미가 없다.
    • 대입연산자 좌측에 절대 올 수 없는 값
    • TO(Temporary Object, 임시 객체) 또한 Rvalue
      • 이름이 없는 객체. 나중에 알려주세요
      • 객체를 return by value 할 때, 객체를 생성하지 않고 클래스를 바로 인스턴스화 할 때 생성

  • Rvalue Reference
    • 아 쓰기 힘들어
  • Move semantics
    • 너도....
    • 아마 임시 객체의 copy는 deep copy를 할 필요는 없는 것 같다...
    • 다만 임시 객체의 할당된 공간을 그냥 없애자...
    • 대입 연산자(인자는 Rvalue)로 발동
      • operator=(A&&){} << 이렇게 받는다.<<이게 바로 이동 대입 연산자... 이름하야 열.파.참.
    • 이동 생성자로도 발동

2.2. 코드



Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:31
Processing time 0.0237 sec