deulee의 개발 노트

고정 헤더 영역

글 제목

메뉴 레이어

deulee의 개발 노트

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (112)
    • C++ (79)
      • C++98 (36)
      • Modern C++(11, 14, 17, 20) (34)
      • C++ STL (9)
    • 데이터베이스 (0)
    • 컴퓨터 구조 (0)
    • 운영체제 (0)
    • 읽은 책 (0)
    • 네트워크 (0)
    • 알고리즘 (31)
      • 이론 (5)
      • 문제 (26)
    • 잡글 (1)
      • 아이디어 (0)
      • 해야할 것 (0)
      • 목표 (0)
      • 정보글 (1)
    • git (0)

검색 레이어

deulee의 개발 노트

검색 영역

컨텐츠 검색

C++

  • [C++11] Lamda Expressions

    2023.08.26 by deulee

  • [C++11] decltype

    2023.08.26 by deulee

  • [C++11] Type aliases

    2023.08.26 by deulee

  • [C++11] nullptr

    2023.08.26 by deulee

  • [C++11] Strongly-typed enums

    2023.08.26 by deulee

  • [C++11] Attributes

    2023.08.25 by deulee

  • [C++11] constexpr

    2023.08.25 by deulee

  • [C++11] Delegating Constructors

    2023.08.25 by deulee

[C++11] Lamda Expressions

`lamda`는 C+11부터 도입된 기능으로, 이름 없는 함수 객체로 지역내에 있는 변수들을 캡처하는 기능이 있다. 우선 `lamda`의 구조는 다음과 같다. [capture](parameters) -> return_type { // 함수 몸체 } (call lamda); // 생략 가능 각각의 요소는 다음과 같다. `capture`는 외부 변수를 람다 내부에서 사용할 때 그 값을 어떻게 캡처할 것인지를 지정함. `parameters`는 람다 함수의 매개변수를 정의함. `return_type`은 람다 함수의 반환 타입을 지정함. (생략 가능) `함수 몸체`는 실제 함수의 내용을 작성하는 부분 `호출 인자`는 함수 호출 시 인자를 의미함. (생략 가능) 캡처를 할 때 다양한 특징이 있는데 다음과 같다. `..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 26. 17:42

[C++11] decltype

`decltype`은 C++11로부터 도입된 키워드로, 표현식(expression)의 결과로부터 해당 표현식의 타입을 추론해내는 데 사용된다. 즉, `decltype`의 특징은 다음과 같다. 표현식의 결과로부터 해당 표현식의 타입을 추론함. cv-qualifers(`const`와 `volatile`) 그리고 참조(reference)의 속성을 유지함. 그럼 다음 예시를 보도록 하자. #include int main(void) { int a = 1; // `a` is declared as type `int` decltype(a) b = a; // `decltype(a)` is `int` const int& c = a; // `c` is declared as type `const int&` decltype(c..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 26. 16:42

[C++11] Type aliases

C++11에서 도입된 "타입 별칭(type aliases)" 키워드인 `using`은 이전의 "typedef" 키워드의 역할을 그대로 이어받는다. 기존의 타입 별칭을 어떻게 했는지 보도록 하자. `typedef`를 사용한 타입 별칭 : // `typedef`를 사용한 타입 별칭 typedef int myInt; typedef double myDouble; typedef std::vector IntVector; `using`을 사용한 타입 별칭: // `using`을 사용한 타입 별칭: using myInt = int; using myDouble = double; using IntVector = std::vector; 이를 통해 코드의 가독성을 높일 수 있다. 그리고 긴 타입 이름을 간소화할 수 있다. 또..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 26. 16:11

[C++11] nullptr

`nullptr`은 C++11로부터 도입된 키워드로, 포인터의 널(NULL) 값을 나타내는 "포인터 리터럴(pointer literal)"이다. 이전에 C++에는 포인터의 널 값을 `NULL`로 나타냈지만 `nullptr`는 `NULL`의 한계와 모호성을 해결하고자 나타났다. `nullptr`의 주요 특징은 다음과 같다. 타입 안전성(Type Safety) : 이전에는 `NULL`이 "정수"로 표현되었기 때문에 포인터와 정수 간의 암시적 변환으로 인한 문제가 발생할 수 있었다. 하지만 `nullptr`는 포인터 타입에만 사용 가능하며, 타입간의 혼동을 방지한다. 다음 코드를 한번 보도록 하겠다. #include void foo(int a) { std::cout

C++/Modern C++(11, 14, 17, 20) 2023. 8. 26. 15:56

[C++11] Strongly-typed enums

"Strongly-typed enums"는 C++11 이후에 도입된 기능으로 열거형(enum)의 새로운 형태를 나타낸다. 기존의 C 타입의 enum의 기존적인 문제였던 "암시적 변환", "기본 형식 지정 불가능", 그리고 "scope pollution"에 대한 문제를 해결하게 되었다. #include // Specifying underlying type as `unsigned int` enum class Color : unsigned int { Red = 0xff0000, Green = 0xff00, Blue = 0xff }; // `Red`/`Green` in `Alert` don't conflict with `Color` enum class Alert : bool { Red, Green }; int ..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 26. 15:38

[C++11] Attributes

"Attributes"는 C++11에서 새로 도입된 기능으로 코드에 추가 정보를 제공하는 방법으로, 컴파일러에게 특정한 힌트나 지시 사항을 제공하거나, 코드의 동작을 제어하거나, 최적화를 조정하는 등의 목적으로 사용된다. 이를 통해 코드를 더 명확하게 작성하거나 컴파일러에게 추가적인 정보를 제공할 수 있다. 형식은 다음과 같다. [[attribute]] 여기서 `attribute`는 사용하고자 하는 실제 속성의 이름이 들어간다. 여기에는 다양한 종류가 있는데 예시를 들자면 `[[noreturn]]`,`[[deprecated]]` 등이 있다. 예시) #include // 항상 예외를 던지므로 반환되지 않는다. [[noreturn]] void f() { throw "error"; } // 무한 루프에 빠지기..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 25. 20:36

[C++11] constexpr

`constexpr`는 C++11에서 도입된 키워드로, "컴파일 시간"에 평가될 수 있는 "표현식(Expressions)"을 나타내는 역할을 한다. 컴파일러는 실행 시간이 아닌 컴파일 시간에 값을 계산하거나 함수를 호출할 수 있게 된다. `constexpr`은 주로 다음 두 가지 상황에서 사용된다. `constexpr` 변수 `constexpr` 함수 그럼 차례대로 알아가 보도록 하자. Constexpr 변수 변수 선언 시 초기화: `constexpr` 변수 선언할 때 초기화 식이 컴파일 시간에 평가될 수 있다면, 해당 변수는 컴파일 시간 상수가 된다. 이 변수는 실행 시간이 아닌 컴파일 시간에 계산되며, 이후에 다른 `constexpr` 표현식에서 사용될 수 있다. #include class Rect ..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 25. 20:25

[C++11] Delegating Constructors

"Delegating Constructors"는 C++11부터 지원되는 기능으로, 한 클래스의 생성자가 같은 클래스의 다른 생성자를 호출하여 초기화하는 기능을 가리킨다. #include class MyClass { private: int num; public: MyClass(int n) : num(n) { // 다른 초기화 작업 수행 std::cout

C++/Modern C++(11, 14, 17, 20) 2023. 8. 25. 15:53

추가 정보

인기글

최신글

페이징

이전
1 2 3 4 5 ··· 10
다음
TISTORY
deulee의 개발 노트 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바