美文网首页
C++构造函数前面添加explicit关键字的作用

C++构造函数前面添加explicit关键字的作用

作者: 海之梦17 | 来源:发表于2017-04-14 22:04 被阅读0次

    C++中的 explicit关键字主要是用来修饰类的构造函数,表明该构造函数是显式的,禁止单参数构造函数的隐式转换。

    所谓隐式转换,即,将构造函数一个值(其类型为构造函数对应的数据类型)转换为一个类对象

    如果C++类的构造函数只有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,通过下面的程序能很好地理解:

    class MyClass

    {

    public:

    MyClass(int num);

    }

    MyClass obj = 10; //ok, convert int to MyClass

    上面的代码中编译器自动将整型转换为MyClass类对象,实际上等同于下面的操作:

    MyClass temp(10);

    MyClass obj = temp;

    上面的所有的操作即是所谓的“隐式转换”。

    如果要避免这种自动转换的功能,可以在声明构造函数的时候前面添加上explict关键字,将类的构造函数声明为“显示”,这样就可以防止这种自动的转换操作。

    修改上面的MyClass类的构造函数为显示的,下面的代码将不能够编译通过,如下所示:

    class MyClass

    {

    public:

    explicit MyClass(int num);

    }

    转自博客:http://blog.csdn.net/e3399/article/details/7610430

    相关文章

      网友评论

          本文标题:C++构造函数前面添加explicit关键字的作用

          本文链接:https://www.haomeiwen.com/subject/dqhqottx.html