논문 쓸거랑 프로젝트 땜에 쓸시간이 없었던것은 매우 미안하다고 생각함... ㅎ
전시간에는 연산자 오버로딩에 대해서 했었지... 아주 오래전에... 흠..
오늘은 cout을 사용해서 클래스나 구조체를 출력해보는것을 할거야.
cout은 C++처음 배우는 사람들에겐 익숙 하지...
무엇인가 출력할때..
마치 이렇게...
그런데
cout 네놈의 정체가 무엇이냐?!
하.. 진짜 정체가 뭐냐..
뭐 결국엔 cout은 ostream이라는 클래스로 선언된 변수고
또 ostream은 basic_ostream<char>로 타입이 재정의된거고
basic_ostream이 실제 cout의 정체..
basic_ostrearm을 보게되면 <<연산자가 엄창나게 오버로딩 되어 있는걸 볼수 있을거야..
여기서 이런 생각이 들지 않아?? "<<을 또 오버로딩하면 다른 것도 출력 할수 있지 않을까?"
오늘은 이 호기심을 풀어 보자...
NSOutput이라는 클래스를 만들어 봤어..
그냥 하는일 없이 문자열 길이 구하고 문자열 저장하는 클래스임..
만약 NSOutput에 있는 멤버 변수를 출력하려면
test.str test.len이렇게 해서 접근해서 해야겠지..
하지만 우리는 string클래스처럼 그냥 cout << test;로만으로도 출력 하고 싶다!
짜잔! string 클래스처럼 우리가 만든 test만 넣어도 출력이 된다!
그런데 앞에 friend라는 키워드를 사용할까?
<<은 NSOutput에 대해서 연산하려는게 아니라 ostream에 대해서 연산 하려는거지..
근데 우리가 이걸 수정 할수 없잖아.. 그래서 전역 함수로 만들기 위해 사용 한거야..
cout으로 출력하기 윈한 오버로딩은 실제로 많이 사용 하진 않고 그냥 "아 이런게 있구나"를 알리기 위해서 쓴거야...
STL부분은 시간도 없고 더 어려워 질것 같아서 스킵! ㅠ
다음에는 컴퓨터 공학개론에 나오는 내용을 다루걸야!
단 기어
서브라임텍스트?
잉텔
로컬
Droos
https://gist.github.com 아니면
http://hooriza.com/utils/highlighter/index.php?
에 올리고 여기에 html 복사해서 붙여넣으면 귀찮게 스샷 안찍어도됨 ㅋ
네이버 지식인처럼 자동으로 되면 좋겠지만 ㄷㄷ
Stealth
[email protected]