C++ Theory
-
[Chapter 3] 자원 관리C++ Theory/Effective C++ 2025. 2. 19. 17:43
1. 자원 관리에는 객체가 그만자원 누출을 막기 위해, 생성자 안에서 자원을 획득하고 소멸자에서 그것을 해제하는 RAII(Resource Acquisition Is Initialization)객체를 사용하자.일반적으로 널리 쓰이는 RAII 클래스는 tr1::shared_ptr 그리고 auto_ptr이다. 이 둘 가운데 tr1::shared_ptr이 복사 시의 동작이 직관적이기 때문에 대개 더 좋다. 반면, auto_ptr은 복사되는 객체(원본 객체)를 null로 만들어 버린다.
-
[Chapter 2] 생성자, 소멸자 및 대입 연산자C++ Theory/Effective C++ 2025. 2. 15. 18:18
1. C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자컴파일러는 경우에 따라 클래스에 대해 기본 생성자, 복사 생성자, 복사 대입 연산자, 소멸자를 암시적으로 만들어 놓을 수 있다.더보기// 컴파일러는 코드에서 복사 대입 연산자가 필요하다고 판단되면// 해당 함수를 컴파일 시점에 생성한다.class MyClass {public: int data;};int main() { MyClass obj1; MyClass obj2; obj1.data = 10; obj2 = obj1; // 여기서 컴파일러가 생성한 복사 대입 연산자가 호출한다. return 0;}// 그래서 우리가 작성한 위 코드가 코드 영역에는 아래와 같이 작성되어 있다.class MyClass {publ..
-
[Chapter 1] C++에 왔으면 C++의 법을 따르자.C++ Theory/Effective C++ 2024. 10. 9. 23:59
1. C++를 언어들의 집합체로 바라보는 안목은 필수C++을 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라진다. 그 경우란, 바로 C++의 어떤 부분을 사용하느냐다.C++ 은 다음 네 가지 부분으로 나누어 생각할 수 있다.C언어에서 물려받은 부분객체 지향 개념의 C++템플릿 C++STL 2. #define을 쓰려거든 const, enum, inline을 떠올리자단순한 상수를 쓸 때는, #define보다 const 객체 혹은 enum을 우선 생각하자.더보기//-------------------------------------------------------------------// 정수형 정적 상수 멤버의 선언 방법 class GamePlayer {private: static const int Nu..
-
[타입 추론] 2. auto의 타입 추론 규칙을 숙지하라C++ Theory/Effective Modern C++ 2024. 9. 16. 00:19
auto 타입 추론은 대체로 템플릿 타입 추론과 같지만, auto 타입 추론은 중괄호 초기치가 std::initializer_list를 나타낸다고 가정하는 반면 템플릿 타입 추론은 그렇지 않다는 차이가 있다.더보기//-----------------------------------------------------------------------------// auto를 이용해서 변수를 선언할 때// auto는 템플릿의 T와 동일한 역할을// 하며, 변수의 타입 지정자(type specifier)는// ParamType과 동일한 역할을 한다. auto x = 27; // 여기서 x의 타입 지정자는 그냥 auto// 자체이다. 반면, 다음 선언에서 const auto cx = x; // 타입 지정자는 cons..
-
[타입 추론] 1. 템플릿 타입 추론 규칙을 숙지하라C++ Theory/Effective Modern C++ 2024. 9. 11. 12:57
규칙 1: 템플릿 타입 추론 도중에 참조 타입의 인수들은 비참조로 취급된다. 즉, 참조성이 무시된다.함수 템플릿의 선언은 대체로 이런 모습이다.templatevoid f(ParamType param); 그리고 이를 호출하는 코드는 대체로 이런 모습이다.f(expr);// 어떤 표현식으로 f를 호출 컴파일 도중 컴파일러는 expr을 이용해서 두 가지 타입을 추론하는데, 하나는 T에 대한 타입 추론이고 또 하나는 ParamType에 대한 타입 추론이다. 이 두 타입이 다른 경우가 많은데, 이는 ParamType에 흔히 const나 참조 한정사(&나 &&를 말한다) 같은 수식어들이 붙기 때문이다. 예를 들어 템플릿의 선언이 다음과 같다고 하자.templatevoid f(const T& param); 그리고 이..