在某些情況下,我們必須使用初始化串列來初始化成員,例如當我們有const資料成員時。那么,是什么讓初始化串列能夠初始化成員而建構式本身卻不能呢?
uj5u.com熱心網友回復:
初始化串列總是初始化所有成員。句號。您未能列出的任何成員都會呼叫其默認建構式。如果您在建構式主體中重新分配給它們,那么(原則上)您剛剛分配然后立即丟棄了一個額外的物件。
在 的特定情況下const,const不能將變數重新分配給。將初始化const變數設定為另一個值是不正確的。它只能在第一次初始化,永遠不會重新分配。
struct Foo {
const int x;
int y;
int z;
Foo() : x(0), y(0) {
// At this point, all three variables (even z) have been initialized.
y = 0; // Okay, reassignment is fine but wasteful
z = 0; // Same as above
x = 0; // Error! Can't reassign to a const
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/493778.html
