What is the explicit keyword for in c++?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What does the explicit keyword in C++ mean?
1 2 3 | explicit CImg(const char *const filename):_width(0),_height(0),_depth(0),_spectrum(0),_is_shared(false),_data(0) { assign(filename); } |
有没有区别?
它用于修饰构造函数;这样修饰的构造函数不能被编译器用于隐式转换。
C++允许最多一个用户提供的转换,其中"用户提供"意味着"通过类构造函数",例如:
1 2 3 4 5 | class circle { circle( const int r ) ; } circle c = 3 ; // implicit conversion using ctor |
编译器将在此处调用circle ctor,construcinmg circle
当你不想要这个的时候,使用
1 2 3 4 5 6 | class circle { explicit circle( const int r ) ; } // circle c = 3 ; implicit conversion not available now circle c(3); // explicit and allowed |
1 2 3 4 5 6 7 8 9 | // Does not compile - an implicit conversion from const char* to CImg CImg image ="C:/file.jpg"; // (1) // Does compile CImg image("C:/file.jpg"); // (2) void PrintImage(const CImg& img) { }; PrintImage("C:/file.jpg"); // Does not compile (3) PrintImage(CImg("C:/file.jpg")); // Does compile (4) |
如果没有