C++學習大綱:拷貝構造函數


C++學習大綱:拷貝構造函數

C++ 拷貝構造函數

1. 定義

(const &);

class A

{

int x,y;

public:

A();

A(const A& a)

{

x = a.x+1;

y = a.y+1;

}

}

其中,const是為了防止在函數中修改實參對象,可以省略。

拷貝構造函數也可以帶有其他參數,但這些參數必須要有默認值。

2. 調用

下面三種情況將會調用拷貝構造函數:

1)定義對象

2)把對象作為值參數傳遞給函數

3)把對象作為返回值

如果在類定義中沒有給出拷貝構造函數,則編譯程序將會為其提供一個隱式的拷貝構造函數,此時的拷貝構造函數跟Java中的克隆函數有點像。

當類定義中包含成員對象,成員對象的拷貝初始化可由成員對象類的拷貝構造函數來實現。

系統提供的隱式拷貝構造函數會去調用成員對象的拷貝構造函數,而自定義的拷貝構造函數則不會自動去調用成員的拷貝構造函數,這時,必須要在拷貝構造函數的成員初始化表中顯式指出。

class A

{

}

class B

{

int z;

A a;

public:

B();

B(const B& b): a(b.a)

{

z = b.z;

}

}

————————————————


C++學習大綱:拷貝構造函數

C++拷貝構造函數(深拷貝,淺拷貝)

對於普通類型的對象來說,它們之間的複製是很簡單的,例如:
int a=88;
int b=a;
而類對象與普通對象不同,類對象內部結構一般較為複雜,存在各種成員變量。下面看一個類對象拷貝的簡單例子。

#include <iostream>

using namespace std;

class CExample {

private:

 int a;

public:

 CExample(int b)

 { a=b;}

 void Show ()

 {

cout<


分享到:


相關文章: