• 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 √

标签: none

添加新评论