C++ 14
-
[C++ 14] 제네릭 프로그래밍 / 추가된 기능과 기억해야 할 내용프로그래밍 기초/C++ 2022. 5. 26. 11:00
제네릭 프로그래밍 함수 템플릿 타입 결정 방법 = 대부분의 경우 암묵적으로 잘 변환되나 int와 unsigned 같이 모호한 경우 명시적으로 결정해 줘야 한다. template TPara max(TPara a, TPara b) { return a > b ? a : b; } unsigned u1 = 2; int i = 3; max(u1, i); // 에러 발생! max(int(u1), i); // Ok max(u1, i); // Ok 자동 리턴 타입 + 컴파일러에서 리턴 타입도 추론이 가능하게 되었다. template inline auto max(T a, U b) { return a > b ? a : b; } 네임 스페이스 네임 스페이스 한정 = 네임 스페이스로 특정 클래스, 변수 등을 선택해 사용할 수 ..
-
[C++ 14] 클래스 / 추가된 기능과 기억해야 할 내용프로그래밍 기초/C++ 2022. 5. 22. 11:32
클래스 생성자 = 단일 인수를 가지는 생성자는 대입 연산자로 생성해도 오버헤드가 발생하지 않는다. class complex { public: complex(double r = 0, double i = 0) : r(r), i(i) {} // ... } complex z4 = 4; // 과거에는 임시 변수를 생성해 오버헤드가 발생한다고 했으나 최신 컴파일러는 문제없이 최적화한다. = 생성자가 여러 개 일 때 다른 생성자를 불러 초기화하는 것을 허용한다. class complex { public: complex(double r, double i) : r{r}, i{i} {} complex(double r) : complex{r, 0.0} {} complex() : complex{0.0, 0.0} {} // ...
-
[C++ 14] C++ 기초 / 추가된 기능과 기억해야 할 내용프로그래밍 기초/C++ 2022. 5. 21. 16:54
C++ 기초 리터럴 + 2진수 표현 접두사가 추가되었다. 접두사 진수 타입 예제 10진수 값 없음 10진수 11 11 0 8진수 011 9 0x 16진수 0x11 17 0b 2진수 0b11 3 + 길이가 긴 리터럴의 자릿수를 표현할 수 있도록 작은따옴표(')로 자릿수 구분이 가능해졌다. long d = 6'546'687'616'861'129l unsigned long ulx = 0x139'ae3b'2ab0'94f3; int b = 0b101'1001'0011'1010'1101'1010'0001; const long double pi = 3.141'592'653'689'793'238'462l; 축소하지 않는 초기화 = 큰 값을 작은 크기의 변수로 초기화할 때 축소 변환하지 않고 오류를 발생시키는 초기화 방..