[C++ ]연산자오버로딩
Transcript of [C++ ]연산자오버로딩
연산자 오버로딩(Operator Overloading)
FaceBook Group "코딩의 아침"
Self Study & Sharing
Ø 연산자오버로딩 개념 (1)
연산자 와 오버로딩 어디서 많이 들어본 단어 아닌가?
맞다!
연산자는, + , = , * , / , % , << , >> 각종 연산자편에서!
오버로딩은, 함수오버로딩편에서!
( 모르겠다면! 연산자편, 함수오버로딩편 필독해 주시라! )
Ø 연산자오버로딩 개념 (2)
우리는 함수 오버로딩을 통해,
오버로딩 된 함수의 수 만큼 다양한
함수의 기능을 구현 했었다.
이제는 기존의 연산자를 이용하여,
새로운 의미를 부여할 수 있는
연산자 오버로딩을 배울 차례다!
열공해야지!
üvoid Sum(int iNum1, int iNum2);
üvoid Sum(float fNum1, float fNum2);
üvoid Sum(double dNum1, double dNum2);
Ø 연산자 함수 : Operator
연산자를 오버로딩 하기 위해서는,
operater 연산자 ( ) 를 사용해야 한다.
오버로딩 연산자를 의미 한다.
예를 들어 operater + , operater * 등과 같이
사용할 수 있다.
Ø printf ( "Hello World" );
갑자기 왠 "Hello World" 라고 생각하겠지만~
연산자 오버로딩을 이해하는데 있어 중요한 문장이라 할 수 있다.
C언어 공부를 시작하고, 처음 콘솔창에 출력한 문장은 대부분
printf( "Hello World !" ); 였을 것이다.
하지만 C++언어를 배우면서, 콘솔창에 문자 출력하는 방식에 변화가 있었다.
바로 cout << "Hellow World! ";
우리는 << 연산자를 그저 출력하기 위해서 쓰는 기호라 암기했었다.
사실!
<< 가 연산자 오버로딩이 된 것이다.
그렇다면? 함수 내부는? 살짝 감이 오지 않는가? ㅋㅋㅋ
( C++이 C확장형이니까 내부는 printf 로 되있겠지! )
그런거였어?
Ø cout << "Hello World";
C++에서는 다양한 연산자오버로딩이 제공되고 있다.
사용자정의 자료형을 operator를 이용하여 연산자의 이름으로 함수를 만들 수 있다.
다음 예제를 보자.
Ø 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클래스에서 불릴 <<함수
이제알겠다!
Ø cout << "예시코드" <<endl;
using namespace mystd;
void main(void){ cout<< "<예시코드>" <<endl; cout<< "Hello World" <<endl;}
<출력결과>
<메인함수>
아하!
사용자정의 이름공간 mystd 안에 있는객체화된 cout클래스를 호출할 수 있다.
mystd::cout << ( "예시코드" ) << ( "\n" )
FaceBook Group "코딩의아침" www.jusinacademy.com
>> 잘못된 내용은 댓글로 피드백 부탁드립니다. 감사합니다. <<