라벨이 explicit인 게시물 표시

[C++] explicit 란?

 C++에서 필수 매개변수가 하나만 있는 생성자는 암시적 변환 함수 로 간주되어 매개변수 유형을 클래스 유형으로 변환 합니다.  생성자 Buffer(int size)가 버퍼 크기를 바이트 단위로 사용 하는 버퍼 클래스가 있는 경우  컴파일러가 자동 으로 ( int size )를 Buffers 로 바꾸는 것을 원하지 않을 것입니다. 이를 방지하기 위해 explicit 키워드를 사용 하여 생성자를 선언합니다 . class Buffer  {  explicit Buffer(int size);  } void useBuffer(Buffer& buf); useBuffer(4); //error. explicit 키워드를 사용한다면 컴파일 오류 가 발생하므로 임시 Buffer객체를 전달 하려면 명시적으로 전달 해야 합니다 . useBuffer(Buffer(4)); // <- 생성자에 맞게 명확하게 사용. 요약 explicit 키워드 없이 사용한다면 사용자가 원치 않은 형변환 이 일어나는 등 예기치 않은 버그 가 발생할 수 있기 때문에 애매한 상황 이라면 explicit 키워드를 사용하여 예방 을 해야 한다.