성엽이
KKIMSSI
성엽이
전체 방문자
오늘
어제
  • 분류 전체보기 (454)
    • :) (2)
    • C프로그래밍이론 (9)
    • C++프로그래밍 (64)
      • STL (1)
    • C# (2)
    • Visual studio 10.0 (9)
    • AT91SAM7S256 (21)
    • 논리회로 (14)
    • AVR2560 (11)
    • TCPIP (16)
    • NetWork (4)
      • Ubuntu Linux (2)
    • Assembly (21)
    • UNIX 프로그래밍 (6)
    • RFID 분석 (1)
    • Win32 API (7)
    • Cortex-M3 (4)
    • Unity (91)
    • Flutter (9)
    • OwnProject (11)
      • It's mine (5)
      • 마인드스톰 실습 (1)
      • 보고서 자료 (2)
      • RPi B+ (2)
    • ETC (25)
      • 상식 (3)
    • MFC (40)
    • PostgeSQL (18)
    • 영상제어 (6)
      • VFW_영상처리 (1)
    • Python (0)
    • Java (30)
      • SpringBoot (2)
      • Javascript (1)
      • JSP (13)
      • Spring (8)
    • Oracle (4)
      • SQL (3)
    • HTML (6)
      • Thymeleaf (1)
      • CSS (1)
      • Bootstrap (3)
    • IDE (1)
      • VS Code (1)
    • Android (2)
    • Privacy Policy (0)
    • MYSQL (2)
      • MariaDB (2)
    • AWS (5)
    • 개인공부 (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
  • 관리자
  • 글쓰기

공지사항

인기 글

태그

  • 문자열 나누기
  • MFC
  • WINAPI
  • Boot Code 분석
  • ARM Reverse Engineering

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
성엽이

KKIMSSI

2013.11.22 _ 연산자 오버로딩 _
C++프로그래밍

2013.11.22 _ 연산자 오버로딩 _

2013. 11. 22. 17:57

리턴타입 Class::operator 연산자(인수 목록)

{

          함수 본체;

}


 연산자 오버로딩 예제

 #include <iostream>

using  namespace  std;

class  A
{

  public:
    int iNum;
    // 디폴트 생성자 
    A()
    {
      iNum = 0;
      cout << "디폴트 생성자\n";
    }

    ~A()
    {
      cout << iNum <<" 소멸자 호출\n";
    }

    // 복사생성자
    A(A &r)
    {
      // 디폴트 생성자에서 받은 값을 다시 넣어줌
      iNum = r.iNum;
      cout << "복사 생성자\n";
    }    

    // 대입연산자 함수를 직접 만들수 있다/ operator= << 함수이름
    A&operator=(A &r)
    {
      this->iNum = r.iNum;

      cout << "대입연산자 호출\n";
    
      return *this;
    }

    A operator+(A &r2)
    {
      // 디폴트 생성자 호출
      A Tmp;
      
      Tmp.iNum = this->iNum + r2.iNum;

      cout << "덧셈연산자 호출\n";

      // 소멸하기전에 임시생성자(복사생성자)를 호출해서 Tmp 를 저장 해둔다.
      return Tmp;
    }

//    friend A operator=( A &r1, A &r2);
};

// 함수!, 반환값이 있어야함 A& <<
/*A operator=(A &r1,A &r2)
{
  r1.iNum = r2.iNum;

  cout << "대입연산자 호출\n";

  return r1;
}*/


int main()
{
  // 디폴트 생성자 호출 
  class A Obj1;
  // 복사 생성자 호출
  class A Obj2(Obj1);
  // 복사 생성자 호출 
  class A Obj3 = Obj1;

  // operator= : 함수호출
  // 대입연산자 호출
  Obj1 = Obj3;
  Obj3.operator=(Obj1);

  Obj1.iNum = 1;
  Obj2.iNum = 2;  
  Obj3.iNum = 3;  

  cout << Obj1.iNum << endl;
  cout << Obj2.iNum << endl;  
  cout << Obj3.iNum << endl;

  // 덧셈 연산자 
  Obj1 = Obj3 + Obj2;

  cout << Obj1.iNum << endl;
  cout << Obj2.iNum << endl;  
  cout << Obj3.iNum << endl;  

  return 0;
}

 : 임시객체(복사생성자)에다가 덧셈을 한 결과를 저장해둔다.





참조사이트 : http://soen.kr/  > C++ 문법 연산자 오버로딩

저작자표시 (새창열림)

'C++프로그래밍' 카테고리의 다른 글

[C] 2,3 차원 배열 과 포인터  (0) 2014.03.19
2013.11.25 _ 연산자 오버로딩 연습 _  (0) 2013.11.25
2013.11.21 _ 상속에서 멤버 함수 재정의(함수오버로딩,함수오버라이딩)  (0) 2013.11.21
2013.11.20 _ 상속 예제 연습  (0) 2013.11.20
2013.11.14_ 상속(Inheritance) _ 예제 실습  (0) 2013.11.14
    'C++프로그래밍' 카테고리의 다른 글
    • [C] 2,3 차원 배열 과 포인터
    • 2013.11.25 _ 연산자 오버로딩 연습 _
    • 2013.11.21 _ 상속에서 멤버 함수 재정의(함수오버로딩,함수오버라이딩)
    • 2013.11.20 _ 상속 예제 연습
    성엽이
    성엽이

    티스토리툴바