(P14)建構函式與析構函式 拷貝建構函式

2021-10-24 02:28:44 字數 2356 閱讀 5009

#include

"test.h"

intmain

(void

)

#ifndef _test_h_

#define _test_h_

class

test

;#endif

// _test_h_

14cpp\14cpp\14cpp\test.cpp

#include

"test.h"

#include

using

namespace std;

// 不帶引數的建構函式稱為預設建構函式

test::

test()

:num_(0

)test::

test

(int num)

:num_

(num)

test::

test

(const test& other)

:num_

(other.num_)

test::

~test()

void test::

display()

test& test::

operator=(

const test& other)

#include

"test.h"

#include

using

namespace std;

void

testfun

(const test t)

//物件t的作用域在塊作用域以內,當生存期結束,就會銷毀

void

testfun2

(const test& t)

test testfun3

(const test& t)

const test&

testfun4

(const test& t)

intmain

(void

)

#include

"test.h"

#include

using

namespace std;

void

testfun

(const test t)

//物件t的作用域在塊作用域以內,當生存期結束,就會銷毀

void

testfun2

(const test& t)

//將物件t拷貝構造到乙個臨時物件中去

test testfun3

(const test& t)

const test&

testfun4

(const test& t)

//testfun4也可以這麼寫:

// test& testfun4(const test& t)

// int

main

(void

)

//t = testfun3(t);//產生乙個臨時物件,將臨時物件賦值給t,接著臨時物件會馬上銷毀

//test t2 = testfun3(t);//testfun3(t)產生的臨時物件不會馬上銷毀,會被有名物件t2接管

//test t2 = testfun4(t);//返回物件的時候,並沒有呼叫拷貝建構函式,返回物件的引用,然後將物件初始化到t2,呼叫拷貝建構函式

const test& t2 =

testfun4

(t);

//不再呼叫拷貝建構函式,因為是引用t2接收的,引用要和返回的物件t共享乙個記憶體空間

建構函式 拷貝建構函式 析構函式

1.如果定義了兩個預設建構函式,vc只回給出warning.2.如果有預設引數的預設構造,如果你給了第乙個預設的話 所有傳遞引數都要有預設植 否則報錯.不過如果是第乙個引數的預設值沒有給出的話,編譯器卻看不出問題,但是沒有 試過這種情況建構函式能不能正常工作.建構函式 用來初始化物件的資料成員,與類...

C 建構函式 拷貝構造 析構函式

建構函式 constructor 在例項物件時,系統自動呼叫,用來初始化物件的資料成員 建構函式宣告語法 類名 引數列表 建構函式注意點 include include using namespace std class computer 上面的建構函式也可以寫成引數列表初始化的形式 compute...

建構函式析構函式和拷貝建構函式

建構函式 建立類物件,並初始化其值。1.傳參 2.按照類成員宣告順序依次構造其成員 3.執行建構函式函式體 析構函式 用來完成物件被刪除前的一些清理工作 釋放類物件 1.執行析構函式函式 2.按照類中成員變數宣告順序的逆序依次析構其成員 初始化列表 初始化物件成員 呼叫成員物件的帶參構造 形式 在建...