c 學習4 賦值建構函式

2021-06-29 16:29:51 字數 733 閱讀 1256

1.賦值建構函式是將乙個引數物件中私有成員賦給乙個已經在記憶體中佔據記憶體的物件的私有成員,賦值建構函式被賦值的物件必須已經在記憶體中,否則呼叫的將是拷貝建構函式,當然賦值建構函式也有深拷貝和淺拷貝的問題。當然賦值建構函式必須能夠處理自我賦值的問題,因為自我賦值會出現指標指向乙個已經釋放的記憶體。還有賦值建構函式必須注意它的函式原型,引數必須是引用型別,返回值也必須是引用型別,否則在傳參和返回的時候都會再次呼叫一次拷貝建構函式

#include

#include

using namespace std;

class x

x()x(x& t)

x& operator=(const x& a)//返回和引數必須是引用,否則會呼叫拷貝建構函式

~x()

};int main()

總結:1.拷貝建構函式:用已經建立的物件去初始化新的物件 

常見形式:x* x1=new x(x2)  /  x * x1=new x(*x3) /  x x4=x5 / x x4=*x3  只要是用乙個物件去新建乙個物件就是呼叫拷貝建構函式

2.賦值建構函式:兩個物件都已經建立好了,相互賦值,修改內部成員變數

x x5(101);//賦值構造時物件已經存在於記憶體中  

x5=*x4或者x5=x2

x * x6=new x(101)

*x6=*x4

注意x6=x4只是改變指標指向,沒有呼叫賦值建構函式

3.均存在深拷貝和淺拷貝問題

C 賦值建構函式 複製建構函式

編譯器提供乙個不接受任何引數,也不執行任何操作的建構函式,稱之為預設建構函式 這是因為創造物件的時候總會呼叫預設建構函式 klunk klunk 定義 klunk lunk 宣告 使用預設建構函式 如果定義了建構函式,c 不會定義預設建構函式,如果希望建立物件時不顯示地對他進行初始化,則必須顯示的定...

C 學習(4) 拷貝建構函式

先來看c 物件的賦值 student xiaoming new student 一年級 一班 student xiaohong xiaoming c 支援物件的賦值,上面的 是沒有問題的,物件xiaohong擁有和物件xiaoming一樣的屬性 同樣是 一年級一班 問題1 以上 物件的賦值是怎麼實現...

C 建構函式例項 拷貝構造,賦值

define crt secure no warnings windows系統 include include include using namespace std class student student operator const student s student const stude...