explicit作用:
在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。
explicit使用注意事项:
例子:
未加explicit时的隐式类型转换
- class Circle
- {
- public:
- Circle(double r) : R(r) {}
- Circle(int x, int y = 0) : X(x), Y(y) {}
- Circle(const Circle& c) : R(c.R), X(c.X), Y(c.Y) {}
- private:
- double R;
- int X;
- int Y;
- };
- int _tmain(int argc, _TCHAR* argv[])
- {
-
-
-
-
-
- Circle A = 1.23;
-
-
- Circle B = 123;
-
- Circle C = A;
- return 0;
- }
- class Circle
- {
- public:
- explicit Circle(double r) : R(r) {}
- explicit Circle(int x, int y = 0) : X(x), Y(y) {}
- explicit Circle(const Circle& c) : R(c.R), X(c.X), Y(c.Y) {}
- private:
- double R;
- int X;
- int Y;
- };
- int _tmain(int argc, _TCHAR* argv[])
- {
-
-
-
-
-
- Circle A = Circle(1.23);
- Circle B = Circle(123);
- Circle C = A;
-
- Circle A(1.23);
- Circle B(123);
- Circle C(A);
- return 0;
- }
|