C 初始化與賦值的區別

2021-05-23 03:21:57 字數 489 閱讀 8482

「賦值操作是在兩個已經存在的物件間進行的,而初始化是要建立乙個新的物件,並且其初值**於另乙個已存在的物件。」

編譯器會區別對待這兩種操作,對於賦值則呼叫賦值操作符,對於初始化則呼叫拷貝建構函式(如果類中沒有拷貝建構函式,則編譯器會提供乙個預設的拷貝建構函式,簡單的賦值類中的成員。)

對於基本型別來說,差別不大;

對於使用者自定義的型別來說,差別很大。

可參考:

總結幾點:

1、一般來說,初始化操作比賦值操作效率更高,更節省空間。

2、有些型別只能用初始化操作而不能用賦值。

3、初始化列表只能使用於簡單的資料型別,如int,bool,string等,並且有一點要注意的是,成員初始化順序只依賴與成員定義的順序,而不是初始化列表中的順序。

初始化與賦值之間的區別

由於在內建型別中,初始化和賦值不進行區分並不會造成很大的影響,所以讓我很大程度上忽略了他們的差別。直到c primer中對於建構函式提出了一句話,建構函式有乙個初始化部分和乙個函式體,在乙個建構函式中,成員的初始化是在函式體執行之前完成的,且按照它們在類中出現的順序進行初始化。讓我第一次開始思考初始...

賦值與初始化

1 賦值 賦值 是給變數指定乙個值或者是改變乙個變數的值,且 必須是在該變數型別所能表達的範圍之內。int speed 30 標準形式 variable expression 變數型別 變數名 表示式 2 初始化 區域性變數 必須顯示的進行初始化。例項變數 類變數 編譯器可以自動對它們進行初始化。b...

初始化和賦值的區別

區別說明 賦值操作是在兩個已經存在的物件間進行的,而初始化是要建立乙個新的物件,並且其初值 於另乙個已存在的物件。編譯器會區別這兩種情況,賦值 的時候呼叫過載的賦值運算子,初始化的時候呼叫拷貝建構函式。如果類中沒有拷貝建構函式,則編譯器會提供乙個預設的。這個預設的拷貝建構函式只是簡單地復 製類中的每...