위 책을 읽으며 공부한 내용을 정리한 글입니다.
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
{
namespace Networking
{
namespace FTP
{
// ...
}
}
}
c++ 17에서는
namespace MyLibraries::Networking::FTP
{
//...
}
// 또는 네임스페이스 앨리어스를 사용하여 다르게 표현하거나 더 짧게 만들 수 있음
namespace MyFTP = MyLibraries::Networking::FTP;
3. printf()나 scanf()는 타입 안정성(타입 세이프)을 보장하지 않기 때문에 C++ 스트림 라이브러리 사용을 권장
4. 리터럴
리터럴 : 코드에 표시한 숫자나 스트링과 같은 값
c++은 다양한 표준 리터럴을 제공함
숫자는 다음과 같은 리터럴로 표현할 수 있음
cout << 123 << '\n'; // 10진수 리터럴 (출력 : 123)
cout << 0173 << '\n'; // 8진수 리터럴 (출력 : 123)
cout << 0x7B << '\n'; // 16진수 리터럴 (출력 : 123)
cout << 0b1111011 << '\n'; // 2진수 리터럴 (출력 : 123)
숫자 리터럴에서는 자릿수 구분자를 사용할 수 있다.
자릿수 구분자는 작은따옴표로 표현한다.
cout << 23'456'789 << '\n'; // 출력 : 23456789
cout << 0.123'456f << '\n'; // 출력 : 0.123456
5. c++ 17 std::byte
한 바이트를 표현한다. c++ 17 이전에는 한 바이트를 char나 unsigned char로 표현했다.
이러한 표현은 문자를 다루는 듯한 느낌을 준다.
반면 std::byte로 표현하면 메모리의 한 바이트라는 의미를 명확히 드러낼 수 있다.
6. 연산 실행 순서
c++에서는 /, *, % 연산을 가장 먼저 수행하고,
그 다음으로 덧셈과 뺄셈을 계산하고,
마지막으로 비트 연산을 수행한다.
(우선순위가 같을 때는 왼쪽에서 오른쪽 순서로 계산한다)
int i = 34 + 8 * 2 + 21 / 7 % 2; // 결과는 1
int j = 34 + (8 * 2) + ((21 / 7) % 2); // 마찬가지로 결과는 1
참고
- 전문가를 위한 c++ 책
'C, C++ > 전문가를 위한 C++ (책)' 카테고리의 다른 글
전문가를 위한 C++ : 2장 스트링 (2) (0) | 2022.06.09 |
---|---|
전문가를 위한 C++ : 2장 스트링 (1) (0) | 2022.06.08 |
전문가를 위한 C++ : 1장 (4) (0) | 2022.06.07 |
전문가를 위한 C++ : 1장 (3) (0) | 2022.06.06 |
전문가를 위한 C++ : 1장 (2) (0) | 2022.06.04 |