explicit를 사용해서 묵시적 변환을 허용하지 않는 이유
C++에서는 다음과 같이 기본적으로 묵시적 변환을 허용하고 있다 int num(20) int &ref(num) 묵시적 변환은 변수를 정의할 때, 대입연산자가 생성자 형태로 변환되어서 들어가는 것을 말한다 #include using namespace std; class Simple { ... }; int main(void) { Simple s1; Simple s2 = s1; // 묵시적 변환으로 Simple s2(s1)으로 복사생성자가 호출된다 Simple s3 = 3; // 묵시적 변환으로 Simple s3(3)으로 이에 맞는 생성자가 호출된다 return 0; } 이상할 것이 없이 편해보이지만, 코드 작성에서 코드 어감상 안맞는 부분이 실행이 된다는 점이다. 예를 들어 스택을 클래스가 있다고 가정하고,..
2019. 8. 22. 15:37