Qt中的關鍵字----explicit

 轉自http://blog.csdn.net/libaineu2004/article/details/19491579ios

 

    關鍵字 explicit 能夠禁止「單參數構造函數」被用於自動類型轉換,主要用於 "修飾 "構造函數. 指明構造函數只能顯示使用,目的是爲了防止沒必要要的隱式轉化.函數

    關鍵字 explicit 能夠禁止「單參數構造函數」被用於自動類型轉換。光看這一句彷佛不太容易明白,下面,舉個簡單地例子。ui

          //main.cpp
            #include <iostream>spa

            using namespace std;.net

            class Test
            {
            public:
                 Test(int a)
                 {
                      m_data = a;
                 }對象

                 void show()
                 {
                      cout << "m_data = " << m_data << endl;
                 }blog

            private:
                 int m_data;
            };ci

            void main(void)
            {
                 Test t = 2;   // 將一個常量賦給了一個對象
                  t.show();
            }編譯器

      編譯可以經過,執行結果:m_data = 2。it

      爲何會這樣呢?原來C++經過隱式轉換,構造了一個臨時對象Test(2),將它賦給了t(這裏調用了默認的構造函數,而不是重載的「=」,由於這是在對象建立的時候)。那麼,若是給構造函數加上關鍵字 explicit ,構造函數變成了 explicit Test(int a),再次編譯,編譯器就會報錯。這時,就只能顯式地使用構造函數了Test t = Test(2) 。

 

     看過這段,仍是不太理解explicit,因而又找到這樣一篇文章http://blog.csdn.net/guodongxiaren/article/details/24455653?utm_source=tuicool&utm_medium=referral    CSDN上的一個牛人所寫,看過之後,會理解的更透徹。

相關文章
相關標籤/搜索