본문 바로가기

C++ Language

항목 3 : 배열과 다형성은 같은 수준으로 놓고 볼 것이 아니다. 상속성은 기본 베이스 클래스에서 객체의 포인터 참조자를 통해 파생 클래스 조작을 할 수 있다는 점을 가지고 있습니다. 이러한 참조자 포인터를 가지고 상속성을 가지고 다형성을 가지고 있다고 합니다. 배열의 경우에는 배열 또한 다형성과 같은 조작이 가능은 합니다. 하지만 배열은 연속된 메모리상의 주소를 가르키기 때문에 지정된 범위내에서 상수 시간으로 접근이 가능합니다. 더보기
항목3 : 복사는 컨테이너 안의 객체에 맞게 비용은 최소화하며, 동작은 정확하게 하자. 무심코 지나간 이야기 이지만 책을 읽으면서 좀더 자세히 혹시 아는 내용이면 튼튼하게 내공을 쌓고, 부족한 부분은 보충하고자 하는 의미에서 정리를 시작하였습니다. 그 동안 현직 프로그래머인데라는 자만심에 의해 제 자신 스스로 도태되어 가는 모습을 느끼고 있을 때 상당히 괴롭고 이 짓을 해야 하는 가라는 고민에 빠져 헤어나오지 못하고 슬럼프가 오랫동안 지속되었습니다. 얼마동안 노력을 하지 않았다부터 시작을 하여 지금에 있는 모습까지 뒤돌아 보면서 많은 것을 느끼며 이제 새로이 시작하는 마음에 책을 다시 잡고 틈틈이 공부하면서 내공을 쌓고자 시작을 하였습니다. 많은 분들에게 도움이 되면 좋고 아니면 참고할 만한 블로그가 되었으면 하는 마음에 이렇게 정리를 시작할까 합니다. 서 론 컨테이너라 한다면 보통은 데이.. 더보기
항목2 : 가능한 C++ 스타일의 캐스트를 즐겨 쓰자. 문제제기: goto, cast에 의한 사태 악화을 개선하기 위한 문제 제기. 착안점 : ㅇ C 스타일의 캐스트 문제점 1) 어떤 타입을 다른 타입으로 아무 생각없이 바꾸어주는 괴물적 존재 2) 눈으로 찾아내기 힘들다. grep과 같은 도구를 쓰더라도 구분하기 힘들다. ㅇ C++ 의 네 가지 연산자 1) static_cast / const_cast / dynamic_cast / reinterpret_cast 해결점 : C++에 정의된 cast 타입을 사용하자. ㅇ static_cast ㅇ const_cast ㅇ dynamic_cast ㅇ reinterpret_cast 자세한 내용 ㅇ http://tingcobell.tistory.com/19 ㅇ C++ Language Tutorial : Type Casti.. 더보기
[C++] 참조자와 포인터 ( reference & pointer ) reference & pointer 모두 다른 객체를 간접적으로 참조 할 수 있습니다. 하지만 두 가지 방법을 구분하는 이유가 무엇일까? 라는데에서부터 시작할까 합니다. 참조자 개념부터 설명을 드리면 "NULL reference"란 것이 없다고 생각하시면 됩니다. 참조자는 어떤 경우든지 메모리 공간을 차지한 객체를 참조하고 있어야 합니다. 따라서 메모리에 접근하기 위해서는 변수를 통해 데이터를 조작하게 됩니다. 하지만 접근하는 변수가 없을 경우 포인터를 사용해야 합니다. 왜냐하면, 이런 경우에는 포인터의 값을 널(NULL)로 세팅할 수 있기 때문입니다.( 포인터을 잘못써서 데이터가 들어가야 될 자리에 널이 들어가면 서버가 죽는 경우를 허다하게 보았기 때문에 잘 사용하셔야 됩니다.) 객체를 참조하는 어떤 .. 더보기
[ STL ]컨테이너에 독립적인( container-independent ) 코드 라는 환상을 조심하자. 서 론 STL은 일반화( generalization)에 기초를 두고 만든 프로그래밍 장치이면 언어입니다. 배열 [ array] 이란 데이터 집합은 컨테이너로 일반화되었고, 매개 변수를 통해 컨테이너에 담을 수 있는 데이터의 타입을 지정할 수 있도록 만들어졌습니다. 함수는 알고리즘으로 일반화되었고, 알고리즘에서 사용되는 반복자의 타입으로 매개 변수화 되었습니다. 표준 연속 메모리 컨테이너는 임의 접근 반복자를 쓸 수 있도록 해주고, 이와 반대로 노드 기반 컨테이너는 push_front와 push_back을 지원하지만, 연관 컨테이너는 그렇지 않습니다. 연관 컨테이너에서는 로그 시간의 복잡도를 가진 low_bound, upper_bound, equal_range 함수를 쓸 수 있지만, 시퀸스 컨테이너를 지원.. 더보기
[ STL ] vector Reference vector class template Vector Vectors are a kind of sequence containers. As such, their elements are ordered following a strict linear sequence. Vector containers are implemented as dynamic arrays; Just as regular arrays, vector containers have their elements stored in contiguous storage locations, which means that their elements can be accessed not only using iterators but also using offsets on .. 더보기
[ STL ] 효과적인 컨테이너 ( container ) 요리법 서 론 STL은 반복자, 알고리즘, 함수 객체 등을 모아 놓은 것이죠, 하지만 대부분의 C++ 프로그래머들의 마음에 가장 멋진 것으로 늠름하게 서 있는 것은 컨.테.이.너.가 아닐까 합니다. 자바의 자료구조를 부러워하고 C++ 타입의 배열을 보면은 한숨아닌 한숨을 쉬다가 STL 컨테이너를 접한 사람들은 한 마디로 압도 당할 수밖에는 없습니다. - 크기를 지정해 주지 않고도 알아서 늘어나고( 혹은 줄어들고), 내부에 들어 있는 객체의 개수도 추적해 주고, 메모리 관리까지 알아서 해주니 말이죠. 요소의 타입만 정해주면 어떤 데이터든 조작할 수 있는 Template의 특징을 그대로 가지면서, 데이터 조작에 소요되는 알고리즘적인 복잡도까지 미리 보장해 주어, 프로그래밍의 재미를 한층 높여주기 때문이라 할 수 있.. 더보기
[ eclipse ] C / C++ 개발 이번에는 디버깅을 할 때를 소개할까 합니다. 보통 서버가 잘 돌아가다가 어느순간에 /허걱 하는 순간이 있으실꺼라 생각합니다. 저희 서버가 보통 잘 그러거든여..ㅋㅋ 프로그램 능력부제..ㅡㅜ 그렇기 때문에 어디에서 무엇때문에 죽었는지 알아야 합니다. 또 이런 상황이 되면 안되기 때문에 보안 코드도 넣고 안전하게 잘 돌아가야 하기 때문에 정리하게 되었습니다. 먼저 eclipse에서 C/C++ 개발시 컴파일은 어떻게 하지 또는 궁금하신 분들을 위해 링크 : http://www.ibm.com/developerworks/kr/library/os-ecc/ Eclipse Platform에서의 C/C++ 개발 C/C++ Development Toolkit (CDT)을 사용하는 방법 문제 해결에 도움이 되셨으면 해서 링.. 더보기