複製建構函式定義
◆複製建構函式是一種特殊的建構函式,其形參為本類的物件引用。
作用是用乙個已存在的物件去初始化同型別的新物件。
◆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...