什麼是C 初始化列表

2021-10-06 03:11:57 字數 1027 閱讀 9860

為什麼要有初始化列表,初始化列表的作用什麼,那些情況下必須要用初始化列表,這應該是令c++初學者頭疼的問題了。

下面就簡單介紹一下

首先什麼初始化列表呢,我們先理解一下這個概念,c++物件的建立首先是開闢記憶體,然後呼叫建構函式,這裡呼叫建構函式就分為隱式初始化和顯示初始化,顯示初始化的就是直接呼叫建構函式或拷貝建構函式,函式寫什麼樣,就怎麼樣呼叫。

而隱式的就是不是函式呼叫的方式,但是後面操作的依然是建構函式或拷貝建構函式,只是看起來不明顯容而已。

以下三種情況下需要使用初始化成員列表:

一,需要初始化的資料成員是基類物件的情況;

二,需要初始化const修飾的類成員;//在c++中是const常量和引用不能被賦值修改,所以只能初始化

三,需要初始化引用成員資料;

另外乙個原因是效率問題,初始化列表和建構函式內賦值是有區別的當成員是類a時,如果在初始化列表中a只呼叫一次建構函式,但是在建構函式內a卻要呼叫一次構造和一次賦值建構函式。

//建構函式的初始化列表

class date

void show()

private:

int _year;

int _month;

int _day;

};class student

void show()

private:

char _name[20];

const int _age;

float _score;

date _date;//乙個類作為另乙個類的成員變數,成員物件,成員物件怎麼初始化???預設的建構函式

static int _mid;

};int student::_mid = 10;

int main()

{//物件型別,分配記憶體

//成員物件構造

//根據物件的方式呼叫物件的建構函式

char s = "zhangsan";

student stu( s,20,85,2020,02,29,10 );/

stu.show();

c 初始化列表

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

C 初始化列表

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

C 初始化列表

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