1、這裡有個簡單的規則:如果你需要定義乙個非空的析構函式,那麼,通常情況下你也需要定義乙個拷貝建構函式。
2、有乙個原則:一般來說你在類中進行了new操作,你就需要析構函式,在你需要析構函式的類中,一般需要加上挎貝建構函式和賦值函式。
3、拷貝建構函式,是一種特殊的建構函式,它由編譯器呼叫來完成一些基於同一類的其他物件的構建及初始化。其唯一的引數(物件的引用)是不可變的(const型別)。此函式經常用在函式呼叫時使用者定義型別的值傳遞及返回。拷貝建構函式要呼叫基類的拷貝建構函式和成員函式。如果可以的話,它將用常量方式呼叫,另外,也可以用非常量方式呼叫。
在c++中,下面三種物件需要呼叫拷貝建構函式(有時也稱「複製建構函式」):
1) 乙個物件作為函式引數,以值傳遞的方式傳入函式體;
2) 乙個物件作為函式返回值,以值傳遞的方式從函式返回;
3) 乙個物件用於給另外乙個物件進行初始化(常稱為複製初始化);
通常的原則是:①對於凡是包含動態分配成員或包含指標成員的類都應該提供拷貝建構函式;②在提供拷貝建構函式的同時,還應該考慮過載"="賦值操作符號。
#include using namespace std;
class cexample
//拷貝建構函式
cexample(const cexample& c)
//一般函式
void show ()
};int main()
什麼時候呼叫拷貝建構函式
以下幾種情況會呼叫拷貝建構函式 1.以乙個物件初始化另乙個物件 2.函式以某個物件為引數 3.函式返回某個物件 4.初始化序列式容器的元素 2.void test2 另外以下程式 points i pointsarray1.points i 這一行並不會觸發 拷貝建構函式。呼叫的是 賦值運算子。賦值...
什麼時候呼叫複製建構函式(拷貝建構函式)
原文 slyar home www.slyar.com 這個問題不是疑問了,查了一下國外 總結一下。假設person是乙個類,複製建構函式的呼叫會在以下幾種情況下發生 1 物件在建立時使用其他的物件初始化 person p q 此時複製建構函式被用來建立例項p person p q 此時複製建構函式...
什麼時候會用到拷貝建構函式?
1 什麼時候會用到拷貝建構函式?2 什麼時候有必要手動寫拷貝建構函式?1 什麼時候會用到拷貝建構函式?當任何你想影印東西的時候,而不管東西被影印成什麼樣子。即任何你想利用乙個已有的類例項給另乙個類例項賦值時,這種賦值可能是顯式的,也可能是隱式的 顯式 classa 1 class 2 隱式 函式的形...