無論是初始化物件還是某些時候為物件賦新值,都可以使用這樣一組由花括號括起來的初始值了,當使用內建型別的變數時,這種初始化形式有乙個重要特點,如果我們使用列表初始化且初始值存在丟失資訊的風險,則編譯器報錯。
long double ld = 3.1415926536
int a, b = ; //錯誤:轉換未執行,因為存在丟失資訊的危險
int c(ld), d = ld; //正確:轉換執行,且確實丟失了部分之
列表初始化返回值:
c++11規定函式可以返回花括號包圍的值的列表,類似於其他返回結果,此處的列表也用來表示函式返回的臨時量進行初始化,如果列表為空,臨時量執行值初始化,否則,返回的值有函式的返回型別決定。如果函式返回的是內建型別,則花括號包圍的列表最多包含乙個值,而且該值所佔空間不應該大於目標型別的空間。
vectorprocess()
; //返回乙個空vector物件
else if (expected == actual)
return; //返回列表初始化的vector物件
else
return;
}
初始化動態分配物件的陣列:
可以對陣列中的元素進行值初始化,方法是在大小之後跟一對空括號,雖然我們用空括號對陣列中元素進行值初始化但不能在括號中給出初始化器。
int* pia2 = new int[10](); //10個值初始化為0的int
//如果初始化器數目大於元素數目,則new表示式失敗,不會分配任何記憶體
//10個int分別用列表中對應的初始化器初始化
int* pia3 = new int[10];
//10個string,前4個用給定的初始化器初始化,剩餘的進行值初始化
string* psa3 = new string[10];
初始化 1 預設初始化 列表初始化
初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...
初始化列表
與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。在c 中,struct和class的唯一區別是預設的克訪問性不同,而這裡我們不考慮訪問性的問題,所以下面的 都以struct來演示。struct foo 初始化列表 ...
初始化列表
初始化列表一般用於建構函式賦值的操作中,它的常用賦值物件有 1 常量 常資料成員只能用初始化列表來初始化 2 引用型別 3 無參建構函式的類的物件。具體格式為 類名 形參表 如int x,int y 成員資料 x 成員資料 y 意思是成員資料繫結x,y。下面以幾個例子來說明一下 一 求圓面積 inc...