C++建構函式中explicit的用法

來源:互聯網
上載者:User

 我們在編寫應用程式的時候explicit關鍵字基本上是很少使用,它的作用是"禁止單參數建構函式"被用於自動型別轉換。

class  AClass
{
  public:
  explicit AClass(int i):m_i(i){ /* ... */};
  // ...
};

AClass a(1); // ok
AClass b = static_cast<AClass>(2); // ok
// AClass b = 2; // error
// a == 3; // error

當我們用如下代碼時

class C1{
 public:
             C1(int a){....}
}
C1 myOne;
myOne = 5;  //調用了複製建構函式

可以成立,先產生一個臨時對象temp(5),然後用複製建構函式將temp賦給myOne.

當我們在C1建構函式名之前加explicit的時候,myOne = 5就無法編譯,因為只有調用建構函式才能建立對象.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.