拷貝建構函式 拷貝初始化

2022-05-06 16:15:15 字數 785 閱讀 8907

1、格式

1)foo(const foo& other) \\複製建構函式  \\左值賦值

2)foo(foo&& other)  \\移動建構函式  \\右值賦值

3)explicit foo(size_type count) \\禁止隱性轉換

2、引數與返回值

沒理解???

2、合成拷貝建構函式

編譯器會將給定物件中非static成員拷貝到正在建立的物件中;

3、拷貝初始化 & 直接初始化

、4、拷貝初始化  & explicit

1)拷貝建構函式、移動建構函式

2)拷貝建構函式一般是非隱式的,很多情況下都會被隱式地使用;

3)explicit宣告的建構函式只能被顯式地使用,不能隱式地使用;

\\string null_book ="9-999-9999-9";\\隱式轉換成功,呼叫了拷貝建構函式

\\ 如 vectorv2=10; 發生隱式轉換,但是被explicit禁止了

5、繞過拷貝建構函式

string str("abc");

string str="abc";

C 直接初始化,拷貝初始化,呼叫哪個建構函式?

很多c 新手不明白直接初始化 拷貝初始化,不清楚初始化過程中使用哪個建構函式。在學習過程中,要有基本概念,並且養成正確的認識也是非常重要的。因此整理了本文。常見錯誤認識1 1.使用 和使用 定義物件沒什麼區別。直接初始化 拷貝初始化。2.直接初始化使用建構函式。錯,也可能使用拷貝建構函式。3.拷貝初...

CPP 建構函式 成員初始化表 拷貝建構函式

類物件的構造順序是這樣的 1.分配記憶體,呼叫建構函式時,隱式 顯示的初始化各資料成員 建構函式列表的初始化方式不是按照列表的的順序,而是按照變數宣告的順序同時初始化顯隱資料成員 2.進入建構函式後在建構函式中執行一般賦值與計算。class a void main 執行順序為 初始化x 0 初始化y...

初始化 賦值 拷貝

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