成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

怎么在類(lèi)中創(chuàng)建構(gòu)造函數(shù) 什么情況下用構(gòu)造函數(shù)法?

什么情況下用構(gòu)造函數(shù)法?有兩種情況,假設(shè)類(lèi)名是CTest,構(gòu)造函數(shù)是默認(rèn)構(gòu)造函數(shù)。一個(gè)是創(chuàng)建本地對(duì)象時(shí),CTest c;//此時(shí)會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù)。一個(gè)是在堆上用new運(yùn)算符分配對(duì)象時(shí),CTest *

什么情況下用構(gòu)造函數(shù)法?

有兩種情況,假設(shè)類(lèi)名是CTest,構(gòu)造函數(shù)是默認(rèn)構(gòu)造函數(shù)。一個(gè)是創(chuàng)建本地對(duì)象時(shí),CTest c;//此時(shí)會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù)。一個(gè)是在堆上用new運(yùn)算符分配對(duì)象時(shí),CTest * pnew CT

C new和delete是如何調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的?

在C中,你可能經(jīng)常使用new和delete來(lái)動(dòng)態(tài)申請(qǐng)和釋放內(nèi)存,但是你有沒(méi)有想過(guò)下面這些問(wèn)題?

是新增和刪除功能。

新增[]和刪除[]是什么?你什么時(shí)候使用它們?

你知道運(yùn)算符new和運(yùn)算符delete嗎?

為什么new []中的數(shù)組有時(shí)會(huì)被delete釋放,有時(shí)不會(huì)?

如果你對(duì)這些問(wèn)題有什么疑問(wèn),不妨看看我的文章。

新增和刪除的到底是什么?

找工作的同學(xué)如果看一些面試的書(shū),相信都會(huì)遇到這樣的問(wèn)題:sizeof不是函數(shù),然后給出一堆理由證明sizeof不是函數(shù)。這里和sizeof一樣,new和delete不是函數(shù),是C定義的關(guān)鍵字,可以通過(guò)特定的語(yǔ)法形成表達(dá)式。與sizeof不同的是,sizeof可以在編譯時(shí)確定其返回值,new和delete背后的機(jī)制更加復(fù)雜。

在你繼續(xù)下去之前,請(qǐng)想一想你認(rèn)為new應(yīng)該做什么。可能你的第一反應(yīng)是new就像C語(yǔ)言中的malloc函數(shù)一樣,是用來(lái)動(dòng)態(tài)申請(qǐng)空間的。你答對(duì)了一半。請(qǐng)看下面的陳述:

string *ps新字符串(hello world)

可以看到new和malloc還是有點(diǎn)區(qū)別的。malloc在申請(qǐng)空間后不會(huì)初始化內(nèi)存,但是new可以。所以new expression背后你要做的事情并沒(méi)有你想的那么簡(jiǎn)單。在我用例子解釋new背后的機(jī)制之前,您需要知道什么是操作符new和操作符delete。

操作員新建和操作員刪除

這兩個(gè)其實(shí)是C語(yǔ)言標(biāo)準(zhǔn)庫(kù)的庫(kù)函數(shù),它們的原型如下:

void * operator new(size _ t)//分配一個(gè)對(duì)象

void *運(yùn)算符delete(void *)//釋放一個(gè)對(duì)象電休克療法

void * operator new[](size _ t)//分配一個(gè)數(shù)組

void *運(yùn)算符delete[](void *)//釋放數(shù)組

可以跳過(guò)后兩個(gè),以后再介紹。前兩個(gè)是C標(biāo)準(zhǔn)庫(kù)函數(shù)。你認(rèn)為這些是功能嗎?請(qǐng)不要。;t懷疑,這就是函數(shù)!在C Primer這本書(shū)里說(shuō)這不是new和delete的重載表達(dá)式(比如operator是重載運(yùn)算符),因?yàn)閚ew和delete的重載是不允許的。但是我沒(méi)有。;我不明白為什么我應(yīng)該使用操作符new和操作符delete,這很令人費(fèi)解。我們只需要知道它們的意思。這兩個(gè)函數(shù)有點(diǎn)像C語(yǔ)言中的malloc和free函數(shù),都是用來(lái)申請(qǐng)和釋放內(nèi)存的,而運(yùn)算符new在申請(qǐng)內(nèi)存后并不初始化內(nèi)存,而是直接返回申請(qǐng)內(nèi)存的指針。

我們可以在程序中直接使用這些函數(shù)。

新建和刪除背后的機(jī)制

知道了以上兩個(gè)函數(shù),我們用一個(gè)例子來(lái)解釋new和delete背后的機(jī)制:

我們不。;t使用簡(jiǎn)單的C內(nèi)置類(lèi)型作為示例,但是使用更復(fù)雜的類(lèi)類(lèi)型來(lái)定義類(lèi)A:

{

public:

:風(fēng)險(xiǎn)值

{

fopen_s(ampfile,測(cè)試