關於初始化和賦值

2022-07-29 14:27:31 字數 318 閱讀 3746

class test

private:

char *ptr;

pubic:

若test test1 ("hello");則呼叫的是建構函式

若test test2(test1;則呼叫的是拷貝建構函式

若test test2 = test1;則呼叫的是拷貝建構函式

若test test2; test2 = test1;則呼叫的是拷貝建構函式

若test test2 = "hello";則先呼叫的是建構函式生成臨時物件,然後再呼叫拷貝建構函式初始化

編譯器總的原則是保證運算子兩邊的型別的一致性。

初始化 賦值 拷貝

折騰我挺長一段時間,基本挺明白了,先來個區別說明 賦值操作是在兩個已經存在的物件間進行的,而初始化是要建立乙個新的物件,並且其初值 於另乙個已存在的物件。編譯器會區別這兩種情況,賦值的時候呼叫過載的賦值運算子,初始化的時候呼叫拷貝建構函式。如果類中沒有拷貝建構函式,則編譯器會提供乙個預設的。這個預設...

賦值與初始化

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

初始化和賦值的區別

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