티스토리 뷰
※ 주의 사항 ※
- 이 글의 목적은 '지식의 전달'이 아닌 '학습의 기록'입니다.
- 따라서 제가 이해하는 그대로의 내용이 포함됩니다.
- 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다.
void 타입
void 타입은 주로 변수의 타입을 지정할 수 없는 경우에 많이 사용합니다. 그에 따라 void 타입은 안정성이 약해 최든 모던 C++에서는 직접적인 사용을 자제하고 있습니다. 아래는 예시입니다.
void Foo(void) {}; //void 타입의 사용을 권장하지 않음
void Foo() {}; //매개 변수가 없는 형태로 선언
위의 예시를 보고 void의 사용을 자제하기 위해 함수의 반환 타입에도 역시 void를 사용하지 않는 것이 좋지 않은가? 하고 의문이 들 수 있습니다. 물론 void의 사용을 자제하는 것이 좋습니다. 그러나 함수의 반환 값이 없는 경우 관행적으로 void를 사용하여 함수를 선언합니다.
unspecified
void 타입의 사용을 자제하다 보니 STL 라이브러리로 제공하는 자료 가운데 다음과 같이 void 타입이 아닌 /*unspecified*/로 명시된 단어들이 존재하게 되었습니다.
template <class Fn, class... Args>
/*unspecified*/ bind (Fn&& fn, Args&&... args);
template <class charT>
/*unspecified*/ put_time(const struct tm* tmb, const charT* fmt);
우선 /*unspecified*/를 void를 대신하는 새로운 데이터 타입으로 생각하면 안 됩니다. /*unspecified*/는 여러 가지 이유에서 데이터 타입을 명확히 지정할 수 없을 때 이를 알리는 용도로 사용합니다. 따라서 일반 개발자가 프로그램을 작성할 때 데이터 타입을 /*unspecified*/로 표기한다면 컴파일 에러가 발생하게 됩니다.
'공부 일지 > CPP 공부 일지' 카테고리의 다른 글
C++ | 묶음 타입(구조체와 공용체) (0) | 2021.08.06 |
---|---|
C++ | char 타입과 wchar_t 타입 (0) | 2021.08.06 |
C++ | auto 타입과 decltype 타입 (0) | 2021.08.06 |
C++17 STL | 구조체 형태의 바인딩 (0) | 2021.08.05 |
C++ | C++ 스타일의 형 변환 연산자 (0) | 2021.08.05 |