建構函式 拷貝建構函式

2021-09-01 00:02:12 字數 1302 閱讀 6586

建構函式可以分為三類

(1)不帶引數的建構函式:在函式體中對資料成員賦初值,這種方式使該類的每乙個物件都得到同一組初值;

(2)帶引數的建構函式:如果使用者希望對不同的物件賦不同的初值,可以採用帶引數的建構函式。在呼叫不同物件的建構函式時從外面將不同的資料傳遞給建構函式,以實現初始化;

(3)複製建構函式:建構函式可以帶上引數,這些引數可以是整形、字元型等,也可以是乙個物件型別,讓它構造乙個相同的物件,這種建構函式是複製建構函式,或者稱為拷貝建構函式

複製建構函式示例。

#includeusing namespace std;

class complex

complex(void) //不帶引數的建構函式

complex(double real, double imag) //帶引數的建構函式

complex(const complex & c) //拷貝建構函式

complex::complex(double r)

complex &operator=(const complex &rhs)

this->m_real = rhs.m_real;

this->m_imag = rhs.m_imag;

return *this;}};

void main()

輸出顯示:

分析://呼叫了無參建構函式,資料成員的初值被賦為0.0

complex c1,c2;

//呼叫一般建構函式,資料成員的初值被賦為指定值

complex c3(1.0,2.5);

//也可以用下面的形式

complex3=complex(1.0,2.5);

//把c3的資料成員值賦給c1,由於c1已經事先被建立,故此處不會呼叫任何建構函式,只會呼叫"="運算子過載函式

c1=c3;

//呼叫型別轉換建構函式,系統首先呼叫型別轉換建構函式,將5.2建立為乙個本類的臨時物件,然後呼叫等號運算子過載,將該臨時物件賦值給c1

c2=5.2;

//呼叫複製建構函式(有下面兩種呼叫方式)

complex c5(c2);

complex c4=c2; // 注意和=運算子過載的區分,這裡等號左邊的物件不是事先已經建立,故需要呼叫複製建構函式,引數為c2

建構函式 拷貝建構函式

person person 引用就是指標常量 所以person p person const p,引用所以一旦初始化指向某個位址,就不能在改變了。為什麼前面還要加const,因為拷貝建構函式的目的就是將乙個物件的所有屬性拷貝到另外乙個物件,這個物件的屬性不變,加上const 相當於 const pe...

建構函式 拷貝建構函式 賦值建構函式

class和struct很大乙個區別在於,c除了成員的訪問控制許可權,struct中的成員預設是public,而class中的field預設是private class還有乙個special的地方是它有建構函式 constructor。建構函式是class中的一員,和成員變數 其他成員函式一起構成乙...

拷貝建構函式,預設拷貝建構函式

拷貝建構函式,預設拷貝建構函式 1.c 的預設拷貝建構函式,從深度拷貝和淺拷貝說起 c 類的預設拷貝建構函式的弊端 c 類的中有兩個特殊的建構函式,1 無參建構函式,2 拷貝建構函式。它們的特殊之處在於 1 當類中沒有定義任何建構函式時,編譯器會預設提供乙個無參建構函式且其函式體為空 2 當類中沒有...