十 C 初始化列表和explicit關鍵字

2021-10-13 07:35:38 字數 911 閱讀 6699

#define _cri_secure_no_warnings

#define _crt_secure_no_warnings

#includeusing namespace std;

class person

int m_a;

int m_b;

int m_c;

//有參構造初始化資料

/* person(int a, int b,int c)

*///利用初始化列表來初始化資料

//建構函式後面+:屬性(引數),屬性(引數)...

person(int a, int b, int c) :m_a(a), m_b(b), m_c(c) //初始化列表

{}};

void test01()

int main()

c++提供了關鍵字explicit,禁止通過建構函式進行的隱式轉換。宣告為explicit的建構函式不能在隱式轉換中使用。

注意:**例項:

如下面**所示,如果我把explicit mystring(int a)這行中的explicit去掉。那麼mystring str3=10;這行會發生隱式型別轉換為 mystring str3=mystring(10),而加上explicit則不會發生此轉換。

#define _cri_secure_no_warnings

#define _crt_secure_no_warnings

#include#includeusing namespace std;

class mystring

explicit mystring(int a) };

void test01()

int main()

c 初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。struct foo 初始化列表 建構函式的兩個執行階段 從概念上來講,建構函式的執行可以分成兩個階段,初始化階段和計算階段,初始化階段先於計算階段 初始化階段 所有...

C 初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。在c 中,struct和class的唯一區別是預設的克訪問性不同,而這裡我們不考慮訪問性的問題,所以下面的 都以struct來演示。struct foo 初始化列表 ...

C 初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。struct foo 初始化列表 建構函式的執行可以分成兩個階段,初始化階段和計算階段,初始化階段先於計算階段。所有類型別 class type 的成員都會在初始化階...