全國(guó)統(tǒng)一學(xué)習(xí)專(zhuān)線(xiàn) 8:30-21:00

課程導(dǎo)航
更多

位置:用考培訓(xùn)網(wǎng) > 計(jì)算機(jī)類(lèi)>計(jì)算機(jī)等級(jí)> 全國(guó)計(jì)算機(jī)二級(jí)C++知識(shí)點(diǎn):類(lèi)的轉(zhuǎn)換

全國(guó)計(jì)算機(jī)二級(jí)C++知識(shí)點(diǎn):類(lèi)的轉(zhuǎn)換

logo
來(lái)源:233網(wǎng)校

2018-10-31 11:15:59

進(jìn)入 >

類(lèi)的轉(zhuǎn)換

C++的內(nèi)部數(shù)據(jù)類(lèi)型遵循隱式類(lèi)型轉(zhuǎn)換規(guī)則。假設(shè)某個(gè)表達(dá)市中使用了一個(gè)短整型變量,而編譯器根據(jù)上下文認(rèn)為這兒需要是的長(zhǎng)整型,則編譯器就會(huì)根據(jù)類(lèi)型轉(zhuǎn)換規(guī)則自動(dòng)把它轉(zhuǎn)換成長(zhǎng)整型,這種隱式轉(zhuǎn)換出現(xiàn)在賦值、參數(shù)傳遞、返回值、初始化和表達(dá)式中。我們也可以為類(lèi)提供相應(yīng)的轉(zhuǎn)換規(guī)則。

對(duì)一個(gè)類(lèi)建立隱式轉(zhuǎn)換規(guī)則需要構(gòu)造一個(gè)轉(zhuǎn)換函數(shù),該函數(shù)作為類(lèi)的成員,可以把該類(lèi)的對(duì)象和其他數(shù)據(jù)類(lèi)型的對(duì)象進(jìn)行相互轉(zhuǎn)換。聲明了轉(zhuǎn)換函數(shù),就告訴了編譯器,當(dāng)根據(jù)句法判定需要類(lèi)型轉(zhuǎn)換時(shí),就調(diào)用函數(shù)。

有兩種轉(zhuǎn)換函數(shù)。一種是轉(zhuǎn)換構(gòu)造函數(shù);另一種是成員轉(zhuǎn)換函數(shù)。需要采用哪種轉(zhuǎn)換函數(shù)取決于轉(zhuǎn)換的方向。

一、轉(zhuǎn)換構(gòu)造函數(shù)

當(dāng)一個(gè)構(gòu)造函數(shù)僅有一個(gè)參數(shù),且該參數(shù)是不同于該類(lèi)的一個(gè)數(shù)據(jù)類(lèi)型,這樣的構(gòu)造函數(shù)就叫轉(zhuǎn)換構(gòu)造函數(shù)。轉(zhuǎn)換構(gòu)造函數(shù)把別的數(shù)據(jù)類(lèi)型的對(duì)象轉(zhuǎn)換為該類(lèi)的一個(gè)對(duì)象。和其他構(gòu)造函數(shù)一樣,如果聲明類(lèi)的對(duì)象的初始化表同轉(zhuǎn)換構(gòu)造函數(shù)的參數(shù)表相匹配,該函數(shù)就會(huì)被調(diào)用。當(dāng)在需要使用該類(lèi)的地方使用了別的數(shù)據(jù)類(lèi)型,便宜器就會(huì)調(diào)用轉(zhuǎn)換構(gòu)造函數(shù)進(jìn)行轉(zhuǎn)換。

#include iostream.h

#include time.h

#include stdio.h

class Date

{

int mo, da, yr;

public:

Date(time_t);

void display();

};

void Date::display()

{

char year[5];

if(yr<10)

sprintf(year,0%d,yr);

else

sprintf(year,%d,yr);

cout< }

Date::Date(time_t now)

{

tm* tim=localtime(&now);

da=tim->tm_mday;

mo=tim->tm_mon+1;

yr=tim->tm_year;

if(yr>=100) yr-=100;

}

int main()

{

time_t now=time(0);

Date dt(now);

dt.display();

return 0;

}

本程序先調(diào)用time()函數(shù)來(lái)獲取當(dāng)前時(shí)間,并把它賦給time_t對(duì)象;然后程序通過(guò)調(diào)用Date類(lèi)的轉(zhuǎn)換構(gòu)造函數(shù)來(lái)創(chuàng)建一個(gè)Date對(duì)象,該對(duì)象由time_t對(duì)象轉(zhuǎn)換而來(lái)。time_t對(duì)象先傳遞給localtime()函數(shù),然后返回一個(gè)指向tm結(jié)構(gòu)(time.h文件中聲明)的指針,然后構(gòu)造函數(shù)把結(jié)構(gòu)中的日月年的數(shù)值拷貝給Date對(duì)象的數(shù)據(jù)成員,這就完成了從time_t對(duì)象到Date對(duì)象的轉(zhuǎn)換。

以上就是小編為您整理全國(guó)計(jì)算機(jī)二級(jí)C++知識(shí)點(diǎn):類(lèi)的轉(zhuǎn)換的全部?jī)?nèi)容,更多精彩請(qǐng)進(jìn)入計(jì)算機(jī)等級(jí)欄目查看

  • 推薦課程
  • 同類(lèi)文章
推薦課程
同類(lèi)文章
  • 推薦課程
  • 相關(guān)學(xué)校
  • 相關(guān)文章
預(yù)約免費(fèi)試聽(tīng)

只要一個(gè)電話(huà)
我們免費(fèi)為您回電