본문 바로가기

Programming

(13)
인프런 C++ 프로그래밍 입문 : 객체지향 [인프런] C++ 프로그래밍 입문 을 보고 정리하는 글 객체지향의 시작 C++ 은 C 기반으로 다른 기능들을 탑재하다보니 절차와 객체 사이 어딘가에 있다 Class 클래스를 정의하는 것 자체로는 메모리를 차지하지 않는다 C++ 에서 class는 struct 와 은닉설정만 다르다 클래스 안에 함수를 정의해도 되긴하지만, 밖에 빼서 정의할 때에는 :: 로 클래스명을 정의한다 데이터와 동작을 함께 정의한다 instantiate : 객체를 만든다 클래스 함수 내부에서 매개변수인지, 멤버변수인지 표시하기 위해 규칙이 있는 경우가 많다 m_, m, _(언더바) 등 현 프로젝트에서는 클래스 멤버 변수는 크게 정의가 없고, 함수에 들어가는 변수는 In___ , 함수에서 포인터 값으로 전달해줄 변수는 out____ 으로..
인프런 C++ 프로그래밍 입문 : Modern C++ [인프런] C++ 프로그래밍 입문 을 보고 정리하는 글 1.auto 초기화하는 값을 기반으로 형태를 맞추어 변수의 타입을 자동으로 지정해준다 Type deduction : 컴파일러가 타입을 추론함 기본 auto 는 const, &를 무시한다 int& reference = a; const int cat = a; auto test1 = reference; // int&가 되어야하지만 int auto test2 = cat; //const int 가 되어야하지만 int auto& 로 정의하여 포인터임을 지정한다 auto 를 쓰는 상황 for 문에서 iterator 를 정의해야 하는 경우, 정의하지 않고 바로 사용한다 코드가 너무 길어지는 경우 2. 중괄호 초기화 중괄호를 사용하여 값을 초기화해주게 된다 변수의 ..
[Effective STL] 0. 서론 수월할 것 같은 연산이 자원 누수를 일으키거나 불안정하게 동작한다 STL이 제공해주는 요소를 잘 결합해서 설계상의 특징을 최대한 끌어내야 한다 STL의 정의 이 책에서는 반복자를 가지고 동작하는 C++ 표준 라이브러리의 일부로 정의한다 string을 포함한 표준 컨테이너, iostream 라이브러리, 함수 객체, 알고리즘 등 (stack, queue, 우선순위 큐, bitset, valarray, C++ 배열 은 제외) 해쉬 포인터도 포함 . 원래의 STL 정의에는 없다. 참조 카운팅 Reference Counting 포인터의 컨테이너를 기반으로 한 설계에서 이야기한다 string 클래스도 내부적으로 참조 카운팅을 하게 되어있다 string, wstring 유니코드 문자열클래스 wstring stirng..
[Effective C++] 1. C++ 1: C++ 언어들의 연합체 C++는 다중패러다임 프로그래밍 언어 라고 부른다 절차적 프로그래밍을 기본으로 하여 객체 지향, 함수식, 일반화 프로그래밍, 메타 프로그래밍을 포함한다 TMP : 템플릿 메타프로그래밍. C++의 일반화 프로그래밍 부분 STL : 템플릿 라이브러리 컨테이너, 반복자, 알고리즘, 함수 객체 C와의 차이점 C에서는 기본적으로 값 전달이 참조 전달보다 좋다. C++에서는 생성자, 소멸자가 생기고, 템플릿을 쓰다보면 해당 객체의 타입을 알 수 없기 때문에 const 객체 전달이 가장 좋다 그러나, STL은 값 전달이 좋다 (C 기반이기 때문에) 2: #define 보다 const, enum, inline 컴파일러를 더 가까이하자 #define 을 쓰면 선행 처리 과정에서 이미 상수로 ..
[Effective C++] 0. 서론 size_t 부호 없는 정수 타입을 typedef로 정의한 것 개수를 셀 때 쓰는 타입 (char* 기반 문자열의 크기, STL 컨테이너의 원소 개수 등) operator[ ] 에서도 받도록 한다 Explicit 암시적 변환이 불가능한 타입 명시적으로 변환해주어야 매개변수 등으로 쓸 수 있다 Undefined Behavior 실행 시간에 어떤 현상이 터질지 확실히 예측할 수 없는 동작 널포인터를 역참조하거나 char 배열 마지막에 널문자가 들어가거나 유효하지 않는 배열 index를 참조하면 안된다는 것