国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

淺談C++ Explicit Constructors(顯式構造函數)

2020-01-26 14:19:27
字體:
來源:轉載
供稿:網友

C++ 為類(Class)提供了許多默認函數。如果自己沒有申明,編譯器會為我們提供一個copy構造函數、一個copy assignment操作符和一個析構函數。此外,如果沒有申明任何構造函數,編譯器會為我們申明一個default構造函數。很像下面的Empty類:

class Empty{  public:    Empty();    Empty(const Empty &rhs);    ~Empty();    Empty& operator=(const Empty &rhs);};

就像Effective C++說的,如果不想使用編譯器自動生成的函數,就應該明確拒絕。

1.C++中的隱式構造函數

如果c++類的其中一個構造函數有一個參數,那么在編譯的時候就會有一個缺省的轉換操作:將該構造函數對應數據類型的數據轉換為該類對象。

2.Explicit Constructors顯式構造函數

為了避免上面提到的只有一個參數的構造函數采用的缺省轉換操作,在構造函數前,使用Explicit 關鍵字修飾即可。

3.如下面的例子:

#include <iostream>using namespace std;class B{  public:    int data;    B(int _data):data(_data){}    //explicit B(int _data):data(_data){}};int main(){  B temp=5;  cout<<temp.data<<endl;  return 0;}

程序第11行,將int轉換為B類型的對象,就是使用了隱式構造函數。因為B中存在一個只有一個參數的構造函數,且參數類型也是int。

如果在構造函數前加explicit ,表示為顯示構造函數,則第11行編譯不能通過。因為這時,就沒有隱式構造函數啦。

以上這篇淺談C++ Explicit Constructors(顯式構造函數)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 夏津县| 朔州市| 定日县| 安西县| 南安市| 同德县| 通道| 五大连池市| 富川| 察隅县| 鲜城| 抚宁县| 务川| 剑河县| 盐池县| 罗山县| 华亭县| 大竹县| 成武县| 巢湖市| 灵寿县| 中超| 普兰县| 兰西县| 图木舒克市| 定日县| 株洲市| 衡东县| 柳州市| 呈贡县| 铜陵市| 博乐市| 平山县| 新化县| 甘肃省| 汉阴县| 新安县| 东兰县| 丹寨县| 本溪市| 易门县|