C++定義隱式轉換函式

來源:互聯網
上載者:User

  C++中單參數建構函式若不聲明為explict,在合適的場合可以產生隱式轉換:由成員變數類型轉換為類類型。

  下面的代碼展示如何?反向的轉換: 

 1 void changeFontSize(FontHandle f, int newsize);
 2 class Font{
 3 public:
 4     operator FontHandle() const   //隱式轉換函式
 5     {
 6         return f;
 7     }
 8 private:
 9     FontHandle f;
10 };
11 
12 Font f;
13 int newsize;
14 changeFontSize(f, newsize);      //將Font隱式轉換成FontHandle
15 

 

   另外,兩個或更多參數的non-explicit建構函式,如果所有形參都提供了預設實參,那麼在需要一個類類型對象的運算式位置,提供一個first形參類型的對象,編譯器也執行隱式轉換,轉換得到一個類對象。

  如,建構函式Rational(int num1 = 0,  int num2 = 1); Rational類中重載了operator*。運算式result = oneHalf * 2; 2發生隱式轉換為Rational對象。result 和 onehalf為Rational對象。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.