1
가정하자 나는템플릿 멤버 기본 초기화
template <typename T>
class{
T t;
};
지금, 나는 그것의 유형에 대한 기본 값을 t을 초기화 생성자를 추가하려면 다음과 같은 템플릿을 가지고있다. 즉, 숫자 형식의 경우 t는 0
으로 초기화해야하고 포인터는 nullptr
으로 초기화해야합니다. 마지막으로 구조체와 같은 다른 유형이있을 수 있습니다. 여기에서는 좋은 초기화가 기본 생성자가됩니다 (어쨌든 호출되므로 여기서는 아무 것도 할 필요가 없습니다).
template<typename T>
class X{
T t;
X() : t(default_value<T>::value);
}
, 나는 그것이 디폴트 값을 가지고 다른 전문 서식 파일의 일종으로 할 수 있다고 생각. 그러나 구조체와 클래스를 처리하는 방법은 무엇입니까? t(...)
을 지정 했으므로 기본 생성자는 더 이상 옵션이 아닙니다.
{}을 (를) 사용하는 것은 특정 초기화 (이 경우에는 값 초기화 필요)를 원할 경우 IMO는 좋지 않습니다. 예를 들어 {}을 사용하면 T가 참조 유형 인 경우 정의되지 않은 동작이 자동으로 나타납니다. –
@ JohannesSchaub-litb 아, 고마워, 나는 그것에 대해 전혀 몰랐다. –