조금 예전의 코드를 보다가 나중에 검토를 해 보자는 주석이 달린 코드를 보았다.
그리고 그 때 제시된 문제를 간략하게 만들어 보았다.
#include <stdio.h>
class CRenderMode
{
public:
explicit
CRenderMode(int mode)
{
printf("mode
= %d\n", mode);
}
};
int main()
{
int mode
= 0;
// 아래 것은 출력 안 됨.
CRenderMode state0( int(mode) );
// 나머지 3개는 출력 됨
CRenderMode state_( int((int)mode) );
CRenderMode state1( int(mode+0) );
CRenderMode state2( (int)mode );
return
0;
}
생성자에 파라미터를 넣을 때 int(mode) 라고 하니 원했던 생성자가 안 불렸다는 것인데, 마치 파라미터 없는 생성자를 부를 때 실수로 CRenderMode state0(); 라고 했을 때와 상황이 같다. 이것도 뭔가 스펙이 있는 듯 하지만, 정확한
이유는 모르겠다.
Posted by 안영기