쪽팔리다.
< Overloading >
서로 다른 타입의 입력인자를 갖는 같은 이름의 함수를 정의하는 것...
< Overriding >
부모 클래스가 갖고있는 함수를 새로 정의하는 것...
< about >
작년 12월 6일 STLport Ver. 5.1.0 이 Release 되면서
설치방법이 조금 변경 되었다.
새로운 설치방법을 포스팅한다고 글을 적은게 1달 전이었는데
이제서야 실행하게 되었다.
설마 이 글을 기다린 사람은 없겠지만,
만약 있다면 죄송스럽게 생각하면서 글을 시작하려고 한다.
또한, 이 글을 읽는 모든 분들께 다시 한 번 당부한다.
퍼가는 것은 자유지만 출처는 분명히 해줬으면 좋겠다.
< intro >
먼 옛날 STL은 한낱 문서상의 표준이었고,
내가 C++에 입문하던 때만 해도 STL은 아는 사람들 끼리의 물건이었다.
그러나 지금은 STL을 모르고 C++을 한다고 말할 수 없게 되었다.
그리고 STLport는 현존하는 STL 라이브리 중 가장 사랑받는 놈이다.
물론 VC++에도 내장 STL이 존재한다.
그래나 현재는 인식이 많이 바뀌었다 해도 많은 사람들이 내장 STL의 사용을 만류하고 있다.
그리고 본인도 그 생각에 동감하는 바이다.
개인적인 이유는 다음과 같다.
MSVC 내장 STL은 딩컴웨어에서 판매하는 상용 라이브러리인데,
VC 구매시에는 이미 이 라이브러리의 버전은 구버전이 되어버린다.
그리고 그에 대한 업그레이드에는 추가 비용이 들게 된다.
그에 비하면 STLport는 무료로 지속적인 업데이트를 해 나가고 있다.
현재 배포되는 STL 라이브러리들에 대한 이야기를 보려면
'Effective STL'의 50장과 부록B를 보기 바란다.
< download >
STLport는 http://sourceforge.net/projects/stlport 에서 받는다.
www.STLPort.org 라는 공식 홈페이지가 있으나
현재 업데이트가 중지된 상태이며
최신 버전은 sourceforge 에서 관리된다.
이 글이 작성되는 시점에서 배포되는 최신 버전은 5.1.0 Release 이다.
< uncompress >
STLport-5.1.0.zip 파일을 받아 압축을 풀자.
본인은 라이브러리들의 관리를 편하게 하기 위하여
VC 관련 라이브러리는 모두 F:\MSVC\Library\ 경로에 모아 놓는다.
압축이 해제되면 STLport-5.1.0 폴더가 생성된다.
< before compile >
컴파일에 앞서 옵션을 설정해 주어야 한다.
옵션 파일의 위치와 이름이 \STLport-5.0.1\stlport\stl_user_config.h 에서
\STLport-5.1.0\stlport\stl\config\user_config.h 로 바뀌었다.
해당 파일을 열어 보자.
먼저 Platform SDK를 사용한다면, 다음의 주석을 제거한다.
또한 다음의 선언문의 주석도 해제하자.
이 선언은 컴파일 결과 자체에는 영향이 없지만
컴파일 중 현재 링크되고 있는 라이브러리를 빌드 창에 표시 하겠음을 나타낸다.
따라서 프로그램이 STLPort 라이브러리를 연결하고 있는지
컴파일 중 확인할 수 있다.
< compile >
컴파일을 위해서는 반드시 콘솔에서 작업해야 한다.
그러므로 아래의 설명은
전부 콘솔에서 이루어 진다는 것을 명심하자.
먼저 콘솔 창을 연다.
모르겠으면 'Windows Key' + R 하면 나타나는 창에 cmd 라고 적는다.
만약 VC++.NET 2003을 깔았다면
아래와 같은 패스가 있을 것이다.
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin
위 폴더에 vcvars32.bat 파일이 있다.
이 파일을 콘솔에서 실행시킨다.
그러면 환경이 준비 됐다는 의미 비슷한 말이 나온다.
(영어라 장담 못하겠다. -_-a)

이제 커맨드 창에서 F:\MSVC\Library\STLport-5.1.0\build\lib 폴더로 들어간다.
다음과 같이 입력한다.


컴파일이 완료되면 아래와 같이 새로운 두 개의 폴더가 생긴다.
이 중 \STLport-5.1.0\bin\ 폴더에 생긴 세 개의 *.dll 파일을 system32 폴더에 복사한다.



제목 : Accelerated C++
원서 : Accelerated C++ (Addison Wesley)
출판사 : 인포북
저자 : 앤드류 쾨니그, 바바라 E.무 공저
번역 : 최지호
감수 : 곽용재
이 책은 C++ In Depth 시리즈의 첫번째 책이다.
C++ In Depth 시리즈는 앞쪽 순서라 해서 초보자용이고
뒤로 갈수록 난이도가 높아진다거나 하는 룰은 따르지 않는다.
그래도 시리즈의 첫번째 이니 만큼 초보자를 위한 책을 내놓지 않았나 추측한다.
이 책을 읽은 것은 2005년 7월 쯤이었다고 기억한다.
그 해 6월 C++ In Depth 시리즈 최초의 다섯권을 세트로 묶은 상품이 나왔었고,
역시나 책 욕심에 몽땅 사버렸다.
뭐, 어쨌든 이 책은 초보자 용이라 일단 미루어 놓았었는데
당시 갑작스런 수술로 인해 입원을 하게 되었고,
쉬는 동안 기본을 다시 닦을 겸 이 책을 들었다.
그리고 감동했다.
그 후 나는 나와 함께 진행했던 스터디에서 교재로 사용했었다.
물론, 그들이 이 책에서 내가 느낀 감동을 느꼈는지는 의문이다.
하지만, 이책은 하나의 프로그램을 완성하기 위해
C++의 가장 기본이 되는 진수들을 끌어 모은다.
그리고 지속적으로 리팩토링을 적용한다.
어쩌면 이 책은 한국인의 입맛은 아닐지도 모른다.
그리고 내 입맛이 한국적이지 아닐지도 모른다.
그러나 당신이 C++의 문법은 대충 깨우쳤다면,
본격적인 C++의 세계에 들어가기 전에 이 책을 먼저 경험해 주기를 바란다.
이 책은 본래의 컨셉이 대학교재였다.
그만큼 내용이 충실하고,
시간에 크게 부담을 느끼지 않아도 된다.
천천히 읽고 따라하고 저자가 하고자 하는 이야기를 음미하기만 하라.
이 책과 함께 프로그램을 만들었을 때,
C++을 어떻게 접근해야 하는지 정도는 똑똑히 볼 수 있게 될 것이다.
< about >
이 문서 역시 STL 문서와 같은 역사를 갖고 있다.
단, Naver 등을 참고한 이전 버전에서 오류가 있었기 때문에
이번에 다시 검토하여 boost의 문서를 토대로 상당히 수정을 가했다.
다시 말하지만, 퍼가는 것은 자유로우나 출처는 분명히 해주길 바란다.
< intro >
boost Library는 오픈소스로 진행되는 C++ 라이브러리 그룹으로
이에 대해 'Effective STL'의 50장에서 간단히 소개하고 있다.
간단히 말해 boost 는 다음 STL표준 채택을 위해 준비된
C++ 라이브러리의 확장판이다.
boost 가 갖는 라이브러리는 상상 이상으로 엄청나다.
(사실 겪어봐야지 말로는 표현이 안된다. ^^)
이미 이 중 일부는 다음 STL 표준으로 내정된 것들도 있다.
다음 표준안이 발표되면 'boost::' namespace 가 아닌
'std::' namespace 로 쓰게 된다는 의미다.
이미 STL 서적은 넘쳐나지만,
boost 관련 서적이 보이지 않는 것으로 봐서
아직 국내에 boost 가 보편화 되기까지 시간이 좀 걸리지 않을까 한다.
뭐, boost 자체를 책 한권으로 묶는 것도 불가능 하다고 생각하지만 말이다.
boost의 Graph 라이브러리에 관한 번역서를 한권 보기는 한 것 같은데...
음 잡설이 너무 길었다.
이만 설치로 넘어가자.
< download >
boost Library의 공식 홈페이지는 www.boost.org 이다.
다운로드는 http://sourceforge.net/project/showfiles.php?group_id=7586 에서 받는다.
현재 정식 버젼은 1.33.1 이며,
다운 받을 파일은 boost_1_33_1.exe 와 boost-jam-3.1.12-1-ntx86.zip 두 가지이다.
< uncompress >
boost_1_33_1.exe 실행시키면 압축 해제할 경로를 묻는다.
본인은 D:\Library 에 압축을 푸는데, 그러면 D:\Library\boost_1_33_1 이 생긴다.
이제 boost-jam-3.1.12-1-ntx86.zip 의 압축을 풀면
bjam.exe 라는 실행 파일이 생긴다.
이 파일을 D:\Library\boost_1_33_1 에 복사한다.
< before compile >
boost 는 라이브러리의 집합이므로
STLPort 에서 iostream 사용을 위해 컴파일 했던 것처럼
컴파일을 필요로 하는 라이브러리에 대해 컴파일 해주어야 한다.
단, STLPort와 같은 일괄 적용이 아니라
개별 라이브러리 마다 필요로 하는 옵션이 다르므로
해당 라이브러리의 문서의 Installation 항목을 잘 읽고
그에 맞추어 컴파일 해주어야 한다.
< compile >
이 부분은 Compile 이 필요한 사람만 하면 된다.
컴파일이 필요 없는 라이브러리를 사용하는 사람은 다음으로 넘어가도 된다.
업무상 프로젝트에 적용한 컴파일 필요 라이브러리는
iostreams, regex, thread 정도이다.
여기에서 regex 는 Adobe 사의 제품에서도 DLL 형태로 쉽게 찾아볼 수 있다.
컴파일 방법은 거의 같으며 약간의 옵션 차이만 있으니
세 가지를 따로 컴파일 한다고 해서 긴장할 필요는 없다.
boost 역시 콘솔창에서 컴파일을 진행하도록 하게 되어있다.
만약 STLport를 설치할 때 사용한 콘솔창을 닫지 않았다면 그 창에서 그대로 진행하도록 하고,
콘솔창을 새로 열었다면 vcvars32.bat 를 다시 실행하도록 한다.
먼저 regex 와 thread 는 특별한 옵션이 필요 없어 명령행 인자가 같다.
콘솔에서 직접 명령을 적어 주어도 좋지만,
편의성과 유지보수를 위해 개인적으로는 '*.bat' 파일로 컴파일 옵션을 저장해 놓기를 권장한다.
batch 파일의 내부는 다음과 같다.
콘솔에서 각 줄을 순서대로 쳐도 같은 효과가 있다.
위 옵션은 STLPort-5.0.1 을 연결하여 컴파일 하는 것이며,
앞서 쓴 'STLPort-5.0.1 설치' 문서의 결과물에 맞추어져 있다.
경로 등이 다른 사람은 문서를 보고 조정해 주기 바란다.
다음은 iostreams 컴파일용 batch 파일이다.
문서를 보면 알겠지만, iostreams 는 공개 압축 라이브러리인 zlib 와 bzip2 를 포함할 수 있다.
iostreams 는 이 두 라이브러리를 이용해 압축 스트림 필터를 생성한다.
iostreams 와 iostreams 필터의 사용법은 boost 문서에 친절하게 나와있다.
컴파일 결과물은 일단 D:\Library\boost_1_33_1\bin\boost\libs 경로에 만들어지며,
D:\Library\boost_1_33_1\stage\lib 로 복사가 되는데,
일부는 자동으로 복사가 이루어지지 않으므로
첫번째 위치에서 직접 두번째 위치로 결과 파일들을 복사해 주어야 한다.
< after compile >
컴파일이 다 끝나면, VC++.NET 2003에서 경로 지정을 해줘야 한다.
방법은 STLPort 와 동일하다.
포함 파일에는 D:\Library\boost_1_33_1 를 추가해주며,
라이브러리 파일에는 E:\Library\VC\boost_1_33_1\libs 를 추가하도록 한다.
단, 일부 라이브러리를 컴파일 했다면,
라이브러리 파일에 D:\Library\VC\boost_1_33_1\stage\lib 도 추가로 등록한다.
우선순위는 STLPort 바로 아래 놓도록 한다.
그리고 D:\Library\VC\boost_1_33_1\stage\lib 에 생성된 '*.dll' 파일들을
'C:\windows\system32' 폴더에 복사한다.
< finale >
이제부터는boost를 사용하면 된다.
사용법은 boost 문서를 참고하기 바란다.
< about >
이 문서는 2004년 본인의 작업용 문서로 시작되었다.
첫 게시물은 2005년 10월 STLPort 4.6.2를 기준으로 싸이월드에 게시 했으며,
2006년 3월 다음의 스터디 카페(지금은 버려져 있다. ㅠ.,ㅠ)에 게시한 것을
버전업 하여 이곳에 옮기는 것이다.
퍼가는 것은 자유지만 출처는 분명히 해줬으면 좋겠다.
< intro >
STLPort는 현존하는 STL 라이브리 중 가장 사랑받는 놈이다.
내가 C++을 본격적으로 입문하던 때만 해도
STL은 아는 사람들 끼리의 물건이었다.
STL의 존재를 알게 된 것도 지금 다니는 곳의 면접을 준비 하면서 였고,
STL을 공부할 당시만 해도 한국어로 된 레퍼런스 서적은 단 두 권 뿐이었다.
하나는 'C++ Standard Library 튜터리얼.레퍼런스 (원서 : C++ Standard Library)'이고,
다른 하나는 'STL 튜터리얼.레퍼런스 가이드 (원서 : STL Tutorial and Reference Guide)'이다.
나는 당시 전자를 선택했고, 몇 달 전 불가피하게 후자를 구입하게 되었으나
개인적으로 'C++ Standard Library 튜터리얼.레퍼런스'를 추천한다.
VC++ 상에서 많은 사람들이 MSVC 내장 STL의 사용을 만류하고 있으며,
본인도 가능하면 STLPort로 대체를 권한다.
여러가지 이유가 있지만,
MSVC 내장 STL은 딩컴웨어에서 판매하는 라이브러리인데
이는 제품 판매 초기에 내장되므로 사용하다보면 너무 뒤쳐진 버전이 된다는 말이며,
라이브러리를 업그레이드를 위해서는 추가 비용을 지불해야 한다는 것이 문제이다.
실제로 아직도 MSVC 6.0 이 상상 이상으로 많이 사용되는데,
MSVC 6.0 내장 STL은 형편없는 버그 덩어리로 간주되기도 한다.
현재 배포되는 STL 라이브러리들에 대한 이야기를 보려면
'Effective STL'의 50장과 부록B를 보기 바란다.
< download >
STLport는 http://sourceforge.net/projects/stlport 에서 받는다.
www.STLPort.org 라는 공식 홈페이지가 있으나
현재 업데이트가 중지된 상태이며
최신 버전은 sourceforge 에서 관리되는 듯 하다.
이 글이 작성되는 시점에서 정식 버전은 5.0.2 이며,
버전 5.1.0 이 RC2까지 진행된 상태이다.
개인적으로 5.0.2 RC2 를 설치한 적이 있으나,
뭔가 이상하여 현재 5.0.1 을 사용하면서 5.1.0 을 기다리는 중이다.
< uncompress >
STLport-5.0.1.tar.gz 파일을 받아 압축을 풀자
본인은 추가 라이브러리들의 관리를 편하게 하기 위하여
D:\Library\ 경로에 모든 라이브러리들을 모아 놓는다.
이는 개발 플랫폼이 변동이 없는 한
재 컴파일 없이 저장된 라이브러리를 컴파일러에 등록하기만 하면 된다는 장점이 있다.
압축이 해제되면 STLPort 폴더가 생성된다.
후에 Boost 라이브러리의 설치를 위해서는
이 폴더의 이름을 STLPort-5.0.1로 변경하는 것이 좋다.






제목 : C++ 프로그래밍의 이해
원서 : Practical C++ Programming (O'Reilly)
출판사 : 한빛미디어
저자 : 스티브 오울린
번역 : 송호중
'C 프로그래밍의 이해'에 대한 만족감 때문에 선택한 책.
절대 비추.
아무래도 저자가 책을 날로 먹을려고 한 것 같다.
'C 프로그래밍의 이해'에서 진전이 하나도 없다.
C++은 C에서 기원하며 C의 모든 것을 받아 들였지만,
C와는 전혀 다르게 접근해야 하는 언어이다.
그러한 특성이 완전히 무시된 채 'C 프로그래밍의 이해'를 약간 개작한 수준이다.
절대 보지 말기를...
::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::
overloading에는 method overloading하고 operator overloading있는데 여기서 말한 overloading은 method overloading에 해당하는 것이네. operator overloading은 해당 operator 자체를 overloading하는 것이니 꼭 다른 타입의 인자를 가질 필요는 없겠지. 참고하도록~~~ ^^
궁극적으로 method와 operater는 같은 개념상에서 접근하게 되지 않나요?
operator overloading 시에도 결국 operator의 좌우 타입선언에 대한 표현이
method의 선언과 비슷하게 되니만큼
개인적으로는 이제까지 크게 구분지어 생각하지는 않았었는데요.
흐음~ 조금 더 생각해 볼 일이로구요~ ^^
음...그러고 보니 수일이 말이 맞는 것 같네. 잠시 착각을 했어. 모든 operator가 원래부터 존재한다고 착각해서 꼭 다른 타임의 인자를 가질 필요가 없다고 생각했네. 원래부터 존재하는 operator는 POD 타입에 적용되는 operator이거나 global new / delete 인데 말이지...혼란을 줘서 미안 *^^*