27 拷貝構造 II

2021-08-14 08:29:51 字數 1050 閱讀 4956

class person

; //沒有寫自己的拷貝建構函式

//編譯器自己給的拷貝構造,新的物件指標和老的物件指標是相同的.

#ifndef _person_h

#define _person_h

class

person

;

#include "person.h"

#include

using

namespace

std;

person::person(const

char *s)

person::~person()

#include 

#include "person.h"

int main()

呼叫拷貝建構函式

1. 呼叫函式,引數是乙個物件本身,而不是引用或指標.

2. person baby_b = baby_a;

person baby_c(baby_a);

3. 函式返回乙個物件

#include 

#include "person.h"

person f()

int main()

person copy_func(char *who)

person nocopy_func(char *who)

// no copy needed! 大部分編譯器優化掉了

任何物件初始化一次,其它是賦值.

用string類做事情, 不建議用char*

用char* 是我要訪問記憶體了, 用二進位制的東西byte

#include 

class person

;

寫乙個類,書寫三個函式. 預設建構函式,virtual函式,拷貝建構函式.

如果真的不希望拷貝建構函式,宣告為private.

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

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

拷貝構造和拷貝賦值

注意指標型別成員變數的深拷貝問題 拷貝構造屬於定義,並賦值 拷貝賦值屬於已經定義,只是賦值。拷貝構造的深拷貝,因為如果提供了拷貝建構函式,則構造該物件時使用的是拷貝建構函式。在拷貝建構函式中只需要 分配新資源,拷貝新內容,返回自引用即可。但是在拷貝賦值函式中,如果存在指標成員變數一般在物件定義時已經...

拷貝建構函式 深淺拷貝

為什麼拷貝建構函式必須為引用傳遞,不能是值傳遞 簡單的回答bai是為了防止遞迴引用。du 具體一些zhi可以這麼講 當 乙個dao物件需要zhuan以值方式傳遞時,編譯shu器會生成 呼叫它的拷貝建構函式以生成乙個複本。如果類a的拷貝建構函式是以值方式傳遞乙個類a物件作為引數的話,當 需要呼叫類a的...