과학

C++의 기능을 알아보자 - 연산자 오버로딩 Part 2.

논문 쓸거랑 프로젝트 땜에 쓸시간이 없었던것은 매우 미안하다고 생각함... ㅎ


전시간에는 연산자 오버로딩에 대해서 했었지... 아주 오래전에... 흠..

오늘은 cout을 사용해서 클래스나 구조체를 출력해보는것을 할거야.


cout은 C++처음 배우는 사람들에겐 익숙 하지...

무엇인가 출력할때..


스크린샷 2014-01-17 오전 11.30.02.png

마치 이렇게...


그런데

cout 네놈의 정체가 무엇이냐?!

스크린샷 2014-01-17 오전 11.35.10.png

스크린샷 2014-01-17 오전 11.35.54.png

스크린샷 2014-01-17 오전 11.36.46.png

하.. 진짜 정체가 뭐냐..


뭐 결국엔 cout은 ostream이라는 클래스로 선언된 변수고

또 ostream은 basic_ostream<char>로 타입이 재정의된거고

basic_ostream이 실제 cout의 정체..


basic_ostrearm을 보게되면 <<연산자가 엄창나게 오버로딩 되어 있는걸 볼수 있을거야..


여기서 이런 생각이 들지 않아??  "<<을 또 오버로딩하면 다른 것도 출력 할수 있지 않을까?"


오늘은 이 호기심을 풀어 보자...


스크린샷 2014-01-17 오전 11.54.34.png

스크린샷 2014-01-17 오전 11.55.21.png

NSOutput이라는 클래스를 만들어 봤어..

그냥 하는일 없이 문자열 길이 구하고 문자열 저장하는 클래스임..

만약 NSOutput에 있는 멤버 변수를 출력하려면

test.str test.len이렇게 해서 접근해서 해야겠지..


하지만 우리는 string클래스처럼 그냥 cout << test;로만으로도 출력 하고 싶다!


스크린샷 2014-01-17 오후 12.33.44.png

스크린샷 2014-01-17 오후 12.34.04.png


짜잔! string 클래스처럼 우리가 만든 test만 넣어도 출력이 된다!

그런데 앞에 friend라는 키워드를 사용할까?


<<은 NSOutput에 대해서 연산하려는게 아니라 ostream에 대해서 연산 하려는거지..

근데 우리가 이걸 수정 할수 없잖아.. 그래서 전역 함수로 만들기 위해 사용 한거야..

cout으로 출력하기 윈한 오버로딩은 실제로 많이 사용 하진 않고 그냥 "아 이런게 있구나"를 알리기 위해서 쓴거야...


STL부분은 시간도 없고 더 어려워 질것 같아서 스킵! ㅠ


다음에는 컴퓨터 공학개론에 나오는 내용을 다루걸야!

5개의 댓글

2014.01.17
스샷에 찍힌거 뭐쓰는거여?
서브라임텍스트?
0
2014.01.17
@단 기어
xcode
0
2014.01.17
ㅊㅊ
0
2014.01.17
코드올릴떄
https://gist.github.com 아니면
http://hooriza.com/utils/highlighter/index.php?
에 올리고 여기에 html 복사해서 붙여넣으면 귀찮게 스샷 안찍어도됨 ㅋ
네이버 지식인처럼 자동으로 되면 좋겠지만 ㄷㄷ
0
2014.07.25
잉텔님 글에 상당히 관심이 있습니다. 연락넣어주세요.
[email protected]
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
563 [과학] 경계선 지능이 700만 있다는 기사들에 대해 34 LinkedList 12 18 일 전
562 [과학] 번역)새들은 왜 알을 많이 낳는가? - 후투티의 형제살해 습성... 7 리보솜 3 2024.03.23
561 [과학] 학계와 AI, 그리고 Bitter Lesson (쓰라린 교훈) 26 elomn 35 2024.02.17
560 [과학] 지구의 속삭임, 골든 레코드의 우주 9 Archaea 10 2024.02.16
559 [과학] 잔혹한 과학실험 이야기 <1> 절망의 구덩이 19 개드립하면안됨 37 2024.02.15
558 [과학] 스트레스를 받으면 술이 땡기는 이유 12 동식 16 2024.02.10
557 [과학] 지능은 모계유전이 아니다. 40 울릉특별자치도 35 2024.01.26
556 [과학] 진화를 생각할 때 고려할 것들 23 날씨가나쁘잖아 12 2024.01.17
555 [과학] 학문적(과학적) 접근과 유사 진화심리"학" 26 날씨가나쁘잖아 19 2024.01.15
554 [과학] 호모 사피엔스의 야릇한 은폐된 배란에 대한 남녀 학자의 다... 14 개드립하면안됨 15 2023.12.29
553 [과학] 김영하의 작별인사를 읽고 느낀 점 (스포있음) 21 장문주의 2 2023.11.28
552 [과학] 제4회 포스텍 SF 어워드 공모전 ( SF 단편소설 / SF 미니픽션 ) 2 따스땅 1 2023.11.25
551 [과학] 펌) CRISPR 유전자 가위 치료제 "최초" 승인 12 리보솜 7 2023.11.25
550 [과학] 러시아는 기술산업을 어떻게 파괴시켰는가(펌) 9 세기노비는역사비... 15 2023.11.18
549 [과학] 고양이에 의한 섬생태계 교란과 생물 종의 절멸 (펌) 2 힘들힘들고 6 2023.11.16
548 [과학] 번역) 알츠하이머병 유전자는 어떻게 살아남았는가? 12 리보솜 10 2023.11.15
547 [과학] 『우영우』의 자폐 스펙트럼 장애 개념이 왜곡인 이유 (펌) 47 힘들힘들고 10 2023.11.12
546 [과학] 흑수저 문과충 출신 구글 취직하는 파이썬 특강 -1 14 지방흡입기 11 2023.09.27
545 [과학] 국가별 당뇨 유병율 이거 뭐가 바뀐건지 아는사람? 8 LAMBDA 1 2023.09.27
544 [과학] 물샤워 ㅇㅈㄹ 하는 놈들 봐라 171 철동이 48 2023.09.23