QT 基础 (二)     explicit 用法
admin
2023-08-03 22:27:59
0

最近在复习QT,准备做项目了,QT Creator 默认生成的代码 explicit Dialog(QWidget *parent = 0)中,有这么一个关键字explicit ,用来修饰构造函数。以前在Windows下写程序的时候,基本上没有碰到这个关键字,那么这个关键字是做什么用的呢?

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

          //main.cpp
            #include

            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) 。


相关内容

热门资讯

德国miji电饭煲触摸开关没反... 由于两种原因造成,第一是这种电饭锅都为微电脑电饭锅,如果在启动过程之中出现错误,有可能导致接触开关没...
华帝热水器触摸屏失灵修复小技巧 需要更换控制面板。找到一样的配件,拆下四周的固定螺丝然后打开前面板,拆下控制面板模块,把新的插上去,...
第七期苏州大讲堂举行 7月11日,第七期苏州大讲堂举行。英国皇家工程院院士、香港理工大学讲席教授林建国,围绕“前沿新材料赋...
谁知道红日燃气灶好不好 最佳回答 你好,很高兴为您解答!我可以很明确的告诉您红日燃气灶的质量非常好,只要你买到的是正宗的红日...
红日燃气灶怎么样大佬告诉一下 最佳回答 你好,这位网友,红日燃气灶不是一线大品牌哦,但是它的价格还是蛮便宜的,性价比也是比较高的,...
红日红外线燃气灶好不好 最佳回答 你好,很高兴为您解答!就我个人觉得,中式厨具不适宜用红外线灶具,红外线灶具的核心是红外线炉...
美军第四轮空袭打击范围发生变化... 美军一周内密集发动四轮打击,多轮打击的范围及目标区域有何异同之处?美方接下来可能还会有哪些进一步的军...
原创 彻... #小米回应网传澎程价格 #,近期全网刷屏的小米澎程 N90 低价预言彻底翻车,无数米粉期待的 20 ...
每经热评丨当“韦神”不再靠馒头... 每经评论员 付克友 7月8日,2025年度国家科学技术奖揭晓。北京大学数学科学学院教授章志飞与长聘副...
中国电信试验AI传输卫星视频新... IT之家 7 月 13 日消息,中国电信研究院今日宣布,中国电信(研究院、上海公司和中电信应急公司)...