auto
: 타이핑 수, 형식 연역에서 이점이 있음.
단, 대리자 형식을 반환하는 경우에는 예기치 않은 동작을 함. 이때 대리자 형식 반환 사용여부의 확인 후 강제 형 변환진행
ex) bool형 1bit에 true/false값이 담기지만 C++에서는 1bit를 다룰 어떠한 문법도 지원하지 않기때문에 어쩔 수 없이 대리자 형식을 반환
중괄호 초기화
Widget w3(); -> Widget 생성자가 아니라 함수선언이 되어버림
Widget w3{}; -> 중괄호 초기화로 위 상황 회피
std::initializer_list를 이용한 생성자가 있을 경우에 중괄호 초기화가 가능한 것은 아님
모든 생성자에 중괄호/괄호의 구분 없이 사용가능. 단, std::initializer_list를 이용한 생성자가 존재할 시 해당 생성자를 중괄호 초기화는 강하게 선호한다. 생성 오류시 생성자 호출의 문제일 가능성이 농후.
ex) std::vector를 이용할 경우
주의: 생성자 호출에 () or {} 둘 중에 일관성을 가질것
nullptr
리터럴 0 & null의 값은 int이지 포인터가 아니다. nullptr은 모든 형식의 포인터. nullptr은 std::nullptr_t로 암묵적으로 모든 포인터 형식으로 변환된다.
ex) auto result = findRecord(....)
if(result == 0) -> 'int or 포인터'냐의 경우에 대한 중의성을 해소가능
'C++' 카테고리의 다른 글
| enum/enum class (0) | 2023.09.28 |
|---|---|
| 별칭 선언(using) (0) | 2023.09.28 |
| 형식 연역 (0) | 2023.09.28 |
| 보편 참조 (0) | 2023.09.28 |
| C++ 복사 (0) | 2023.09.28 |