變量
初始值
當對象在創(chuàng)建時獲得了一個特定的值,我們說這個對象被初始化了(initialized)矛绘。用于初始化變量的值可以是任意復雜的表達式耍休。當一次定義了兩個或多個變量時,對象的名字隨著定義也就馬上可以使用了货矮。因此在同一條定義語句中羊精,可以用先定義的變量值去初始化后定義的變量值。
// 兩者都正確
double price = 109.99, discount = price * 0.16;
double salePrice = applyDiscount (prince, discount);
在C++語言中囚玫,初始化是一個異常復雜的問題喧锦。很多程序員對于用等號=
來初始化變量的方式倍感困惑,這種方式容易讓人認為初始化是賦值的一種抓督。事實上在C++語言中燃少,初始化和賦值是兩個完全不同的操作。然而在很多編程語言中二者的區(qū)別幾乎可以忽略不計铃在,及時在C++語言中有時這種區(qū)別也無關(guān)緊要阵具,所以人們特別容易把二者混為一談。需要強調(diào)的是定铜,這個概念至關(guān)重要阳液,我們也將在后面不止一次提及這一點。
初始化不是復制揣炕,初始化的含義是創(chuàng)建變量時賦予其一個初始值趁舀,而賦值的含義是把對象的當前值擦除,而以一個新值來替代祝沸。
列表初始化
C++定義了很多初始化方式矮烹,如下例所示:
int units_sold = 0;
int units_sold = {0};
int units_sold{0};
int units_sold(0);
都是賦值0給units_sold
變量越庇;花括號來初始化變量是C++ 11的新標準,得到了廣泛應用奉狈,這種初始化形式被稱為列表初始化(list initialization)
÷卑Γ現(xiàn)在,無論是初始化對象還是某些時候為對象賦新值仁期,都可以使用這樣一組花括號括起來的初始化值了桑驱。