[C++ ]연산자오버로딩

9
연산자 오버로딩 (Operator Overloading) FaceBook Group "코딩의 아침" Self Study & Sharing

Transcript of [C++ ]연산자오버로딩

Page 1: [C++ ]연산자오버로딩

연산자 오버로딩(Operator Overloading)

FaceBook Group "코딩의 아침"

Self Study & Sharing

Page 2: [C++ ]연산자오버로딩

Ø 연산자오버로딩 개념 (1)

연산자 와 오버로딩 어디서 많이 들어본 단어 아닌가?

맞다!

연산자는, + , = , * , / , % , << , >> 각종 연산자편에서!

오버로딩은, 함수오버로딩편에서!

( 모르겠다면! 연산자편, 함수오버로딩편 필독해 주시라! )

Page 3: [C++ ]연산자오버로딩

Ø 연산자오버로딩 개념 (2)

우리는 함수 오버로딩을 통해,

오버로딩 된 함수의 수 만큼 다양한

함수의 기능을 구현 했었다.

이제는 기존의 연산자를 이용하여,

새로운 의미를 부여할 수 있는

연산자 오버로딩을 배울 차례다!

열공해야지!

üvoid Sum(int iNum1, int iNum2);

üvoid Sum(float fNum1, float fNum2);

üvoid Sum(double dNum1, double dNum2);

Page 4: [C++ ]연산자오버로딩

Ø 연산자 함수 : Operator

연산자를 오버로딩 하기 위해서는,

operater 연산자 ( ) 를 사용해야 한다.

오버로딩 연산자를 의미 한다.

예를 들어 operater + , operater * 등과 같이

사용할 수 있다.

Page 5: [C++ ]연산자오버로딩

Ø printf ( "Hello World" );

갑자기 왠 "Hello World" 라고 생각하겠지만~

연산자 오버로딩을 이해하는데 있어 중요한 문장이라 할 수 있다.

C언어 공부를 시작하고, 처음 콘솔창에 출력한 문장은 대부분

printf( "Hello World !" ); 였을 것이다.

하지만 C++언어를 배우면서, 콘솔창에 문자 출력하는 방식에 변화가 있었다.

바로 cout << "Hellow World! ";

우리는 << 연산자를 그저 출력하기 위해서 쓰는 기호라 암기했었다.

Page 6: [C++ ]연산자오버로딩

사실!

<< 가 연산자 오버로딩이 된 것이다.

그렇다면? 함수 내부는? 살짝 감이 오지 않는가? ㅋㅋㅋ

( C++이 C확장형이니까 내부는 printf 로 되있겠지! )

그런거였어?

Ø cout << "Hello World";

C++에서는 다양한 연산자오버로딩이 제공되고 있다.

사용자정의 자료형을 operator를 이용하여 연산자의 이름으로 함수를 만들 수 있다.

다음 예제를 보자.

Page 7: [C++ ]연산자오버로딩

Ø cout << "예시코드" <<endl;

#include <stdio.h>

namespace mystd{ char* endl = "\n";

class myostream { public:

myostream& operator<<(char* szName) {

printf("%s", szName);return *this;

} }; myostream cout; }

사용자정의 네임스페이스

객체화된 myostream 클래스

내부구성은 printf 함수

객체 cout클래스에서 불릴 <<함수

Page 8: [C++ ]연산자오버로딩

이제알겠다!

Ø cout << "예시코드" <<endl;

using namespace mystd;

void main(void){ cout<< "<예시코드>" <<endl; cout<< "Hello World" <<endl;}

<출력결과>

<메인함수>

아하!

사용자정의 이름공간 mystd 안에 있는객체화된 cout클래스를 호출할 수 있다.

mystd::cout << ( "예시코드" ) << ( "\n" )

Page 9: [C++ ]연산자오버로딩

FaceBook Group "코딩의아침" www.jusinacademy.com

>> 잘못된 내용은 댓글로 피드백 부탁드립니다. 감사합니다. <<