Tutorial by Examples



Translation Unit 내부에서는 전역 변수의 초기화 순서가 지정되어 있지만 Translation Units에 대한 초기화 순서는 지정되지 않습니다. 따라서 다음 파일이있는 프로그램 foo.cpp #include <iostream> int dummyFoo = ((std::cout << "foo"), 0); bar.cpp #include <iostream> int dummyBar = ((std::cout << "bar"), 0)...
범위가 지정된 enum이 값을 보유하기에 너무 작은 정수 유형으로 변환되면 결과 값은 지정되지 않습니다. 예: enum class E { X = 1, Y = 1000, }; // assume 1000 does not fit into a char char c1 = static_cast<char>(E::X); // c1 is 1 char c2 = static_cast<char>(E::Y); // c2 has an unspecified value 또한 정수가 열거 형으로 변환되고 정수...
void* 값이 객체 유형 T* 에 대한 포인터로 변환되었지만 T 에 대해 올바르게 정렬되지 않은 경우 결과 포인터 값은 지정되지 않습니다. 예: // Suppose that alignof(int) is 4 int x = 42; void* p1 = &x; // Do some pointer arithmetic... void* p2 = static_cast<char*>(p1) + 2; int* p3 = static_cast<int*>(p2); p2 는 int 형의 객체를 가리킬 수 없기 때문...
하나의 함수 포인터 유형에서 다른 함수 유형으로의 reinterpret_cast 또는 하나의 함수 참조 유형에서의 결과는 지정되지 않습니다. 예: int f(); auto fp = reinterpret_cast<int(*)(int)>(&f); // fp has unspecified value C ++ 03 하나의 오브젝트 포인터 유형에서 다른 오브젝트 유형으로의 reinterpret_cast 또는 하나의 오브젝트 참조 유형에서의 결과는 지정되지 않습니다. 예: int x = 42; char* p = r...
< , > , <= 또는 >= 사용하여 두 포인터를 비교하면 다음과 같은 경우 결과가 지정되지 않습니다. 포인터는 다른 배열을 가리 킵니다. (배열이 아닌 객체는 크기가 1 인 배열로 간주됩니다.) int x; int y; const bool b1 = &x < &y; // unspecified int a[10]; const bool b2 = &a[0] < &a[1]; // true const bool b3 = &a[0] &l...
참조는 객체가 아니며 객체와 달리 인접한 메모리 바이트를 차지하는 것이 보장되지 않습니다. 표준은 레퍼런스가 스토리지를 필요로하는지 여부를 불특정로 남겨 둡니다. 언어의 많은 기능은 참조가 차지할 수있는 모든 저장소를 이식 가능하게 검사하는 것을 불가능하게합니다. sizeof 가 참조에 적용되면 참조 된 유형의 크기를 반환하므로 참조가 저장 영역을 차지하는지 여부에 대한 정보가 제공되지 않습니다. 참조 배열은 불법이므로 참조의 크기를 결정하기 위해 배열의 가상 참조에있는 두 개의 연속 요소의 주소를 검사 할 수는 없습니다. ...
함수에 여러 개의 인수가있는 경우 평가 순서는 지정되지 않습니다. 다음 코드는 x = 1, y = 2 또는 x = 2, y = 1 인쇄 할 수 있지만 어느 것을 지정하지 않습니다. int f(int x, int y) { printf("x = %d, y = %d\n", x, y); } int get_val() { static int x = 0; return ++x; } int main() { f(get_val(), get_val()); } C ++ 17 C ++ ...
C ++ 11 모든 표준 라이브러리 컨테이너는 이동 한 후 유효하지만 지정되지 않은 상태로 남습니다. 예를 들어 다음 코드에서 v2 는 이동 후에 {1, 2, 3, 4} 를 포함하지만 v1 은 비어있는 것이 보장되지 않습니다. int main() { std::vector<int> v1{1, 2, 3, 4}; std::vector<int> v2 = std::move(v1); } 일부 클래스에는 정확하게 정의 된 이동 시작 상태가 있습니다. 가장 중요한 경우는 std::unique_pt...

Page 1 of 1