c++ 17

    전문가를 위한 C++ : 1장 (4)

    1. 유니폼 초기화 c++ 11 이전에는 타입의 초기화 방식이 일정하지 않았다. 예를 들어 다음과 같이 원을 정의할 때 한 번은 구조체로, 한 번은 클래스로 작성한 경우를 살펴보자. struct CircleStruct { int x, y; double radius; }; class CircleClass { public: CircleClass(int x, int y, double radius) : mX(x), mY(y), mRadius(radius) {} private: int mX, mY; double mRadius; }; c++ 11 이전에는 CircleStruct 타입 변수와 CircleClass 타입 변수를 초기화하는 방법이 서로 달랐다. CircleStruct myCircle1 = { 10, 10..

    전문가를 위한 C++ : 1장 (3)

    1. unique_ptr, shared_ptr 배열 생성 unique_ptr은 C 스타일 배열을 저장하는 데도 활용할 수 있다. 다음 예는 열 개의 Employee 인스턴스로 구성된 배열을 생성하여 이를 unique_ptr에 저장하고, 배열에 담긴 원소를 접근하는 방법을 보여주고 있다. auto employees = make_unique(10); cout

    전문가를 위한 C++ : 1장 (2)

    1. enum과 enum class enum은 원래 타입을 엄격하게 따지지 않는다. 타입을 엄격히 따지는 것을 '스트롱 타입' 또는 '타입에 안전하다(타입 세이프하다)'고 표현한다. enum 타입은 항상 정수로 해석하기 때문에 선언한 형태에 관계없이 모든 enum 타입을 서로 비교할 수 있다. 타입을 엄격하게 적용하고 싶다면 enum class를 사용한다. enum class PieceType { King = 1, Queen,// 2 Rook = 10, Pawn// 11 }; enum class로 정의한 열거 타입 값들의 이름은 스코프(유효 범위)가 자동으로 확장되지 않는다. 다시 말해 enum class 스코프 안에서만 유효하다. 따라서 열거 타입 값을 사용할 때마다 다음과 같이 스코프 지정 연산자를 ..

    전문가를 위한 C++ : 1장 (1)

    위 책을 읽으며 공부한 내용을 정리한 글입니다. 1. using문 헤더 파일 안에서는 절대로 using 문을 작성하면 안된다. (책) 일반적으로 헤더 파일(*.h)에는 using 지시문을 넣지 마세요. 해당 헤더를 포함하는 모든 파일이 네임스페이스의 모든 식별자를 범위로 가져오기 때문에 이름 숨김 및 이름 충돌 문제가 발생할 수 있으며, 디버그하기 매우 어렵습니다. 헤더 파일에는 항상 정규화된 이름을 사용하세요. (MSDN) https://docs.microsoft.com/ko-kr/cpp/cpp/namespaces-cpp?view=msvc-170&viewFallbackFrom=vs-2019 2. c++ 17 중첩된 네임 스페이스 기존에는 이런 방식 namespace MyLibraries { namesp..