• <table id="4yyaw"><kbd id="4yyaw"></kbd></table>
  • <td id="4yyaw"></td>
  • 發布時間:2020-09-28 23:08 原文鏈接: C++之類型轉換函數(四)

    3、轉換構造函數出廠:

    我們前面學習過構造函數,構造函數它可以定義不同類型的參數;但是我們今天這里所說的轉換構造函數的定義時這樣的:

    有且僅有一個參數

    參數是基本類型

    參數是其它類型

    接著我們對上面的普通數據類型轉換類類型的代碼進行分析:

    #include <iostream>
    #include <string>
    class Test{
    public:
       Test()
       {
       }
       Test(int i)
       {
       }
    };
    int main()
    {
        Test t;
        t =6; //從 C 語言角度,這里將 5 強制類型轉換到 Test 類型,只不過編譯器 在這里做了隱式類型轉換
        return 0;
    }

    分析:

    上面的Test(int i )就是一個轉換構造函數,所以我們上面的這句隱式轉換語句:

    t =6

    這里其實發生了我們剛才說的利用了轉換構造函數,把6轉換成Test(6),而這樣寫就會產生一臨時對象,所以就可以進行賦值了;但是在現在的技術發展中,肯定是不希望出現這種要人去防止這隱式轉換,所以在c++中有了新技術來防止出現隱式轉換:

    工程中通過explicit關鍵字杜絕編譯器的轉換嘗試

    轉換構造函數被explicit修飾只能進行顯示轉換(也就是強制類型轉換)

    代碼實踐一:

    #include <iostream>
    #include <string>
    class Test{
    public:
       Test()
       {
       }
      explicit Test(int i)
       {
       }
    };
    int main()
    {
        Test t;
        t =6;
        return 0;
    }


  • <table id="4yyaw"><kbd id="4yyaw"></kbd></table>
  • <td id="4yyaw"></td>
  • 调性视频