Programming/C++

Programming/C++

[C++/03] 참조자 (reference)

Introduction 기존에 C언어를 사용하던 개발자는 다른 변수나 상수를 가리키기 위해서 무조건 포인터(pointer)를 사용했습니다. 그러나 포인터 문법은 어떠한 행위도 용납되는 강력한 성능에 부수적으로 따라오는 사고도 많았는데요. 이러한 휴먼 에러 발생 확률을 줄이기 위해서 C++은 포인터가 꼭 필요한 상황이 아니라면 그 기능을 한정시킬 새로운 문법을 제공합니다. 이를 참조자(레퍼런스, reference)라고 하며, 오늘은 참조자가 무엇인지, 그리고 포인터와의 차이점은 무엇인지 살펴보도록 하겠습니다. 참조자란? 우리의 친절한 이웃 위키피디아는 참조자를 아래와 같이 정의 내리고 있습니다. In the C++ language, a reference is a simple reference datatyp..

Programming/C++

[C++/02] 이름 공간 (namespace)

Introduction C++을 학부 수업에서 처음 접할 때 아마 모두가 같은 코드를 적을 것입니다. 차이가 있더라도 굉장히 미미할 것이라고 생각되는데요. 아니라면 세대 차이에 충격받을… 일단 코드부터 보시죠. #include using namespace std; int main() { cout

Programming/C++

[C++/01] C++ 스타일 프로그래밍이란

Introduction 안녕하세요, 알고리즘 엔지니어 YoungJ입니다. 근 2년간 SLAM을 비롯한 Computer Vision 스터디를 진행하며 많은 알고리즘들을 직접 구현 및 실험을 해봤는데요. 저는 개인적으로 Python을 통해 실험 및 데모 개발을 진행하고, C++로 성능 최적화 및 프로젝트에 코드를 추가하는 과정을 선호합니다. 이 과정마다 C++ 개발 단계가 저에게는 bottleneck으로 작용한다는 것을 발견했습니다. 그럴 때마다 C++를 더 잘하고 싶다는 욕망이 커져만 갔고, 이번 기회에 본격적으로 깊게 공부를 해보고자 합니다. 학부 과정 이후로 진득하게 서적과 여러 레퍼런스들을 찾아보는 과정이 처음이라 많이 낯설지만 조급해하지 않고 차근차근 나아가려 합니다. C++를 잘하는 기준은 뭘까?..

Programming/C++

[C++] enum class

Introduction C 언어 프로그래밍에 익숙하신 분들은 enum을 한 번쯤은 들어보셨을 겁니다. 저도 참 유용하게 사용했던 기억이 있는데요. C++에서는 기존 enum의 문제점들을 보완한 enum class를 주로 사용한다는 사실을 접하게 되었습니다. 그러면서 또다시 충격을 받았죠. 역시 난 C++을 C처럼 사용하고 있었어! 이번 포스트에서는 기존 C style enum의 문제점들을 짚어보고, C++에서 권장되는 enum class는 무엇이 다른지 살펴볼 것입니다. C style enum, what's wrong? 아래는 우리가 이미 친숙한 C 스타일의 enum(unscoped-enum) 사용법입니다. 사용자 정의 타입으로 enum 선언을 통해 원하는 타입을 정의할 수 있습니다. #include u..

Programming/C++

[C++] static_cast

Introduction 앞서 type casting 포스트에서 전반적인 casting에 대한 내용을 다루었습니다. 해당 포스트는 다양한 종류의 type casting 방법들에 대한 일종의 허브 역할로서 계속 업데이트할 예정입니다. 이번 포스트를 읽으신 후 더 많은 내용을 보고 싶다면 아래 URL을 클릭해 주세요. [C++] type casting Introduction C++은 기본적으로 type safe 하지 않다고 알려져 있습니다. 쉽게 말하면, 문법적으로 틀리지 않으면 의미적으로 문제가 있어도 컴파일러가 잡아주지 않습니다. C++ 수업을 처음 접한다면 searching-fundamental.tistory.com 이번 포스트의 본론으로 돌아와서 static_cast에 대해 이야기해 보겠습니다. 흔히 ..

Programming/C++

[C++] type casting

Introduction C++은 기본적으로 type safe 하지 않다고 알려져 있습니다. 쉽게 말하면, 문법적으로 틀리지 않으면 의미적으로 문제가 있어도 컴파일러가 잡아주지 않습니다. C++ 수업을 처음 접한다면 얼마 지나지 않아 이를 직접 경험할 수 있습니다. int array[4]; array[4] = 1; 이 코드는 문법적으로는 틀리지 않습니다. 또한, 처음 프로그래밍을 접하시는 분들에게는 직관적으로 다가올 수 있죠. 우리는 보통 0이 아닌 1부터 숫자를 카운팅 하니까요. 하지만 위 코드는 접근해서는 안될 영역에 값을 저장했기 때문에 에러를 발생시킬 확률이 존재합니다. 이런 점들을 기억하고 다시 type casting으로 돌아가 봅시다. Type casting은 변수나 함수의 parameter/r..

Programming/C++

[C++/Study] 주석 / comment

Intro 대부분의 개발자들에게 코드에서 가장 많이 접하는 표현이 무엇이냐고 물어보면 필자의 100% 뇌피셜로 같은 답변이 나올 것이다. 주석(Comment)을 가장 많이 봅니다. 주석은 컴퓨터가 아닌 사람에게만 유용한 message로 컴파일러는 이 부분을 무시한다. 즉, 다른 이가 이 코드를 볼 때 쉽게 이해할 수 있도록 돕는 길잡이이자 코드로는 필요가 없으나 필수적인 정보들(ex. License)을 담기 위해 사용된다. 물론 여기까지 본다면 이와 같이 되물을 수 있다. 잘 짠 코드는 주석이 필요 없는데? 120% 동의한다. 최고의 코드는 Self-documentation이 되는 코드라고 생각한다. 그러나 모든 코드를 혼자 작성할 수 없기 때문에 개발자에게 협업은 필수이며, 주석 역시 개발 및 협업에 ..

YoungJ
'Programming/C++' 카테고리의 글 목록