난 당신이 같은 것을 의미 가정
std::vector<MyClass*> v(10);
예, 벡터는 널 포인터로 초기화됩니다. 장과 절에 어느 정도 관여하여 표준 ...
C++ 14 §23.3.6.2 "`벡터 생성자, 복사 및 할당"인용 :
explicit vector(size_type n, const Allocator& = Allocator());
을 효과 :를 구축 a vector
n
으로 지정된 할당자를 사용하는 기본 삽입 요소.
이 필요합니다T
이 *this
에 DefaultInsertable
을한다.
§23.2.1 "일반 컨테이너 요구 사항"¶13 :
-T
가 X
에 DefaultInsertable
입니다 다음과 같은 표현이 잘 형성되어 있음을 의미합니다 :
allocator_traits<A>::construct(m, p)
- X
의 요소는 평가로 초기화되는 경우 이 기본으로 삽입 된입니다. p
가 X
내에 할당 요소의 초기화 저장소의 주소 표현
allocator_traits<A>::construct(m, p)
F.
는 §20.7.8.2 ¶5 "할당자는 멤버 함수를 형질이"
template <class T, class... Args>
static void construct(Alloc& a, T* p, Args&&... args);
효과 : 통화 a.construct(p, std::forward<Args>(args)...)
그런 통화가 잘 형성되어있는 경우; 그렇지 않으면 ::new (static_cast<void*>(p)) T(std::forward<Args>(args)...)
을 호출합니다.
§20.7.9.1 "[기본] allocator
부재"¶12 :
template <class U, class... Args>
void construct(U* p, Args&&... args);
효과 :::new((void *)p) U(std::forward<Args>(args)...)
위로 §23.2.1 ¶13을 참조하면, args
가 비어있는 것을 알 수있다. 따라서 ...
§8.5 "이니셜"
이니셜 빈} 인 목적, 즉 ()
가한다 값으로 초기화.
동일한 섹션 :
에 입력 T
의 목적 수단 값을 초기화 ... 그렇지 않으면, 객체는 제로 - 초기화된다. T
스칼라 타입 (3.9) 개체에 의해 얻어진 값으로 초기화되는 경우, ... :
동일한 섹션 :
대상물 또는 유형 T
의 기준 수단 제로 초기화 정수 리터럴 0
(제로)을 T
으로 변환합니다. 106
각주 106 :
리터럴 값이 널 (null) 포인터 값으로 포인터 타입 결과
0
정수 변환, 4.10에서 규정
.
awesome thanks :) – r0ng