国产探花免费观看_亚洲丰满少妇自慰呻吟_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(顯式構造函數)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 交城县| 正宁县| 虹口区| 雷州市| 朝阳区| 思茅市| 江门市| 康定县| 定边县| 青岛市| 若尔盖县| 宜章县| 博客| 景德镇市| 永福县| 河间市| 新和县| 共和县| 盐津县| 宁国市| 新干县| 商都县| 夹江县| 任丘市| 鹿泉市| 万年县| 清新县| 塔城市| 中江县| 谢通门县| 兴城市| 康马县| 汝南县| 绍兴县| 黎城县| 县级市| 莱芜市| 西充县| 祥云县| 玉龙| 天水市|