최대 1 분 소요

개요

  • 암시적 변환 방지


예제

  • 코드
    #include <string>

    using namespace std;

    class Test1 {
    	private:
    		int i;

    	public:
    		Test1(int i){};
    		Test1(string s){};
    		~Test1(){};
    };

    class Test2 {
    	private:
    		int i;

    	public:
    		explicit Test2(int i){};
    		Test2(string s){};
    		~Test2(){};
    };

    void func1(Test1 t) {}
    void func2(Test2 t) {}

    int main() {
    	func1(Test1(1));
    	func1(1);

    	func2(Test2(2));
    	func2(2);

    	return 0;
    }
  • 실행 결과
    test.cpp: In function ‘int main()’:
    test.cpp:33:15: error: could not convert ‘2’ from ‘int’ to ‘Test2’
       33 |         func2(2);
          |               ^
          |               |
          |               int