explicit
- explicit关键字只能修饰只有一个参数的类构造函数。
explicit表明该函数时显式的,不能进行自动地隐式类型转换。
class Demo{ public: Demo(); //没有参数,无法进行类型转换 Demo(double a); //有一个参数,可以进行类型转换 Demo(int a, double b); //有两个参数,无法进行类型转换 Demo(int a, int b = 10, double c = 1.6); //有三个参数,其中两个参数有默认值,故可以进行隐式转换 ~Demo(); ... };
implicit 隐式的,类构造函数默认情况下声明为隐式的
class Demo{ public: Demo(); explicit Demo(double a); // 无法进行隐式转换 Demo(int a,double b); ~Demo(); };
Demo test; test = 12.2 × test = (Demo)12.2 √