우리가 새 프로젝트를 콘솔 앱으로 만들면
int main
{
std::cout << "Hello World!\n";
}
이런 코드가 자동으로 만들어져 있으며 실행하면 콘솔 창에 Hello World라는
문구가 나온다.코드를 풀어보면 std안에 있는 cout을 실행한 것이다.
저렇게 코드를 만들어 본다면
#include<iostream>
namespace std
{
class MyCout
{
public:
void operator<<(const char* _Text)
{
print_s(_Text);
}
};
}
이와 같이 만들수 있다.
이거를 사용하려면
int main()
{
std::MyCout CoutTest;
CoutTest <<"Hello World!\n";
}
이렇게 하면 같은 화면이 나올것이다.그치만
이 코드에서 보이듯이 멤버함수를 사용하려면 그 객체가 있어야한다.
그럼 cout은 왜 객체를 만들지도 않았는데 std::cout 이렇게 호출이 되는걸까?
객체는 변수라고 볼 수 있다. 지역구분에 의한 변수 종류에는
전역 변수, 멤버 변수, 지역 변수 이렇게 볼 수 있고
cout은 전역 변수라고 볼 수 있는 것이다.
namespace std
{
class MyCout
{
public:
void operator<<(const char* _Text)
{
print_s(_Text);
}
};
MyCout MyCoutTest;
}
위와 같이 std에서 전역으로 선언으로 해주면
main에서 MyCout을 만들 필요가 없어지기 때문에
int main()
{
std::MyCoutTest<<"Hello World!\n";
}
이렇게 사용이 가능해지는 것이고 cout 역시 이와 같은 원리이다.
'C++' 카테고리의 다른 글
DefaultConstructer(기본 생성자) (0) | 2020.12.18 |
---|---|
복습) 임시 변수,레퍼런스(reference) (0) | 2020.12.17 |
namespace (0) | 2020.12.16 |
UserTypeOperator (0) | 2020.12.15 |
UserTypeHeap (0) | 2020.12.15 |