C 拷貝構造函式呼叫時機

2021-10-01 21:24:29 字數 905 閱讀 5834

class

a//傳入乙個字串代表變數的名字

a(string n)

:name

(n)~a(

)//拷貝建構函式a(

const a& a)

//過載=運算子

a&operator=(

const a& a)

friend ostream&

operator

<<

(ostream& os,

const a& a)

;private

: string name;};

ostream&

operator

<<

(ostream& os,

const a& a)

int

main

(void

)

int

main

(void

)

void

f(a a)

intmain

(void

)

因為以值傳遞的方式會呼叫拷貝建構函式,所以在拷貝建構函式中對拷貝構造的定義中是以引用的方式進行引數傳遞的,為了防止在拷貝建構函式引數傳遞的過程中再次呼叫拷貝建構函式,形成遞迴。

在看其他人的部落格的時候,看到了函式返回的時候也會呼叫拷貝建構函式,但是在我這個機器上並沒有測試出來。

a f

(void

)int

main

(void

)

C 拷貝建構函式的呼叫時機

include iostream using namespace std class test2 test2 int a test2 int a,int b 有參建構函式 兩個引數 test2 析構函式 test2 const test2 obj void printf void main31 in...

C 拷貝建構函式的呼叫時機

當以拷貝的方式初始化物件時會呼叫拷貝建構函式,這裡需要注意兩個關鍵點,分別是以拷貝的方式和初始化物件 1.初始化物件 初始化物件是指,為物件分配記憶體後第一次向記憶體中填充資料,這個過程會呼叫建構函式,物件被建立後必須立即初始化。也就是說只要建立物件就會呼叫建構函式。2.初始化和賦值的區別 初始化和...

C 拷貝建構函式的呼叫時機

define crt secure no warnings includeusing namespace std class person person int a person const person p person int m age 1 使用乙個已經建立好的物件來初始化另乙個物件 void...