c/c++语言开发共享Qt中关于C++中的关键字explicit实例讲解

关键字 explicit 可以禁止“单参数构造函数”被用于自动类型转换。光看这一句似乎不太容易明白,下面,举个简单地例子。 //main.cpp

关键字 explicit 可以禁止“单参数构造函数”被用于自动类型转换。光看这一句似乎不太容易明白,下面,举个简单地例子。

            //main.cpp              #include <iostream>                using namespace std;                class test              {              public:                   test(int a)                   {                        m_data = a;                   }                     void show()                   {                        cout << "m_data = " << m_data << endl;                   }                private:                   int m_data;              };                void main(void)              {                   test t = 2;   // 将一个常量赋给了一个对象                    t.show();              }

编译能够通过,执行结果:m_data = 2。

为什么会这样呢?原来c++通过隐式转换,构造了一个临时对象test(2),将它赋给了t(这里调用了默认的构造函数,而不是重载的“=”,因为这是在对象创建的时候)。那么,如果给构造函数加上关键字 explicit ,构造函数变成了 explicit test(int a),再次编译,编译器就会报错。这时,就只能显式地使用构造函数了test t = test(2)。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/608119.html

(0)
上一篇 2021年5月15日
下一篇 2021年5月15日

精彩推荐