複製建構函式(C )

2021-10-02 19:47:58 字數 1303 閱讀 5086

複製建構函式定義

◆複製建構函式是一種特殊的建構函式,其形參為本類的物件引用。

作用是用乙個已存在的物件去初始化同型別的新物件。

◆class類名;

類名:類( const 類名&物件名) //複製建構函式的實現

複製建構函式被呼叫的三種情況

◆定義乙個物件時,以本類另-個物件作為初始值,發生複製構造;

◆如果函式的形參是類的物件,呼叫函式時,將使用實參物件初始化形參物件,發生複製構造;

◆如果函式的返回值是類的物件,函式執行完成返回主調函式時,將使用return語句中的物件初始化乙個臨時無名物件 ,傳遞給主

調函式,此時發生複製構造。

隱含的複製建構函式

◆如果程式設計師沒有為類宣告拷貝初始化建構函式,則編譯器自己生成

乙個隱含的複製建構函式。

◆這個建構函式執行的功能是:用初始值物件的每個資料成員,初始

化將要建立的物件的對應資料成員。

」= delete"

如果不希望物件被複製構造

◆c+ + 98做法:將複製建構函式宣告為private,並且不提供函式的實現。

◆c++11做法:用"=delete" 指示編譯器不生成預設複製建構函式。

例:class point //建構函式 ,內聯

point(const point& p) =delete; //指示編譯器不生成預設複製建構函式

private:

int x, y; //私有資料

};例項:

#include "stdafx.h"

#include

using namespace std;

class point

point(point &p);

int getx()

int gety();

private:

int x,y;

};//成員函式的實現

point::point(point &p)

{x=p.x;

y=p.y;

cout<

//形參為point類物件的函式

void fun1(point p)

{cout

{point a(4,5);

point b=a;//1、用a初始化b,呼叫拷貝建構函式

cout結果:

C 複製建構函式

c 複製建構函式,一般在一下幾種情況中出現 1 物件以值傳遞的方式傳入函式時 2 物件以值傳遞的的方式從函式返回 3 乙個物件通過另乙個物件初始化 4 陣列 根據陣列中的初始化列表初始化陣列的時候。5 容器 初始化順序容器中的元素 有3種情況必須使用複製建構函式 a 如果有資料成員是指標 b 要在建...

C 複製建構函式

1.概念 只有單個形參,而且該形參是對本類型別物件的引用 常用const修飾 2.首先看乙個小例子 h中 class test private int a float b cpp中 int main test test1 5,5.5 test test2 1,1.1 coutcouttest3使用了...

C 複製建構函式

誰知道 include include using namespace std class person 如果兩種方式同時存在,會呼叫沒有const的版本 2.推薦,存在唯一的person person person person 3.不推薦,這個依然是複製建構函式,詭異。與第二種方法存在二義性 p...