c 中拷貝建構函式和賦值運算子過載本質上一樣麼

2021-03-10 16:06:14 字數 1343 閱讀 9635

1樓:匿名使用者

本質不一樣,語法上也不一樣

他們的區別:

拷貝建構函式是在一堆原始的記憶體上建立起一個物件。

複製運算子過載是在已初始化的物件上進行復制。

2樓:千鋒教育

複製構造函

數接受單個類型別引用形參,這個形參一般用const修飾。

class a

;一般的類,編專譯器合成的建構函式就能完成屬必要的工作。擔當類有一個資料成員是指標,或者成員表示在建構函式中分配的其他資源;在建立新物件時必須做一些特定工作。這兩種情況必須定義複製建構函式。

複製操作符過載,由operator後面跟所定義的操作符符號,通過定義名為operator=函式來對賦值進行定義。該操作符函式有兩個形參:第一個形參對應左邊的運算元(隱式繫結到this指標了),第二個形參對應右運算元。

返回型別應該與內建賦值運算返回的型別相同,內建型別的賦值運算返回對右運算元的引用,賦值操作符也返回對同一型別的引用。

class b

;可以使用合成複製建構函式的類通常也可以使用合成賦值操作符。一般來說,如果類需要複製建構函式,也就需要賦值操作符。

3樓:匿名使用者

假設你有一個類a,和一個已有的類物件b時

當你執行a a=b來建立物件a時呼叫的是拷貝建構函式,當你執行a a;a=b時呼叫的是運算子過載就功能而言,感覺差別不大

4樓:葉片舟

形式上不一樣,本質一樣

都是為了防止,淺拷貝帶來的錯誤

用的時機不懂

既然是建構函式,所以就是在初始化使用的, 過載賦值操作符就是賦值時用的

c++中拷貝建構函式和賦值運算子有哪些不同

5樓:丿艾瑞灬莉婭

連結">網頁連結

拷貝copy建構函式和賦值運算

bai符的行為比較du相似,都是將一個zhi物件的dao值複製給另一個物件;但是其結果卻有些不同,拷貝建構函式使用傳入物件的值生成一個新的物件的例項,而賦值運算子是將物件的值複製給一個已經存在的例項。這種區別從兩者的名字也可以很輕易的分辨出來,拷貝建構函式也是一種建構函式,那麼它的功能就是建立一個新的物件例項;賦值運算子是執行某種運算,將一個物件的值複製給另一個物件(已經存在的)。呼叫的是拷貝建構函式還是賦值運算子,主要是看是否有新的物件例項產生。

如果產生了新的物件例項,那呼叫的就是拷貝建構函式;如果沒有,那就是對已有的物件賦值,呼叫的是賦值運算子。

呼叫拷貝建構函式主要有以下場景:

物件作為函式的引數,以值傳遞的方式傳給函式。

物件作為函式的返回值,以值的方式從函式返回使用一個物件給另一個物件初始化

運算子》和》有什麼區別,C 中 運算子和 運算子有什麼區別

表示是帶符號的右移 按照二進位制把數字右移指定數位,符號位為正補零,符號位負補一,低位直接移除。表示無符號的右移 按照二進位制把數字右移指定數位,高位直接補零,低位移除。區別 在傳遞時也把符號一起傳遞,比如 3 2在傳遞再傳出時依然是 3 2,而使用 時就會統一變為3 2。帶符號於無符號的差別就在此...

c語言基礎複合賦值運算子式子aaa

先從假設一個數bai開始du。假設a 10 a a a a 6 此時zhia 10a a a 4 此時a 10 a a 2 此時a 2 a 4 此時a 4 最後a 8 在賦dao值運算子回 當中,有一類c c 獨有答的複合賦值運算子。它們實際上是一種縮寫形式,使得對變數的改變更為簡潔。c語言是一種計...

關於c運算子優先順序和的,C中運算子優先順序的問題

a和a 含義不同啊,a 表明先執行後加減,所以還是從0開始的。c 中運算子優先順序的問題 假定陣列是 int y 指標是 int symbol y int x 222 語句 symbol x 因為是字尾 表示式裡不自增,故計算分2步走,版1 1 symbol x 1 2 symbol symbol ...