- 相關推薦
2017計算機二級C++考點類的轉(zhuǎn)換
引導語:類的轉(zhuǎn)換是計算機二級C++的一個考點,以下是百分網(wǎng)小編分享給大家的2017計算機二級C++考點類的轉(zhuǎn)換,歡迎閱讀!
類的轉(zhuǎn)換
C++的內(nèi)部數(shù)據(jù)類型遵循隱式類型轉(zhuǎn)換規(guī)則。假設某個表達市中使用了一個短整型變量,而編譯器根據(jù)上下文認為這兒需要是的長整型,則編譯器就會根據(jù)類型轉(zhuǎn)換規(guī)則自動把它轉(zhuǎn)換成長整型,這種隱式轉(zhuǎn)換出現(xiàn)在賦值、參數(shù)傳遞、返回值、初始化和表達式中。我們也可以為類提供相應的轉(zhuǎn)換規(guī)則。
對一個類建立隱式轉(zhuǎn)換規(guī)則需要構造一個轉(zhuǎn)換函數(shù),該函數(shù)作為類的成員,可以把該類的對象和其他數(shù)據(jù)類型的對象進行相互轉(zhuǎn)換。聲明了轉(zhuǎn)換函數(shù),就告訴了編譯器,當根據(jù)句法判定需要類型轉(zhuǎn)換時,就調(diào)用函數(shù)。
有兩種轉(zhuǎn)換函數(shù)。一種是轉(zhuǎn)換構造函數(shù);另一種是成員轉(zhuǎn)換函數(shù)。需要采用哪種轉(zhuǎn)換函數(shù)取決于轉(zhuǎn)換的方向。
轉(zhuǎn)換構造函數(shù)
當一個構造函數(shù)僅有一個參數(shù),且該參數(shù)是不同于該類的一個數(shù)據(jù)類型,這樣的構造函數(shù)就叫轉(zhuǎn)換構造函數(shù)。轉(zhuǎn)換構造函數(shù)把別的數(shù)據(jù)類型的對象轉(zhuǎn)換為該類的一個對象。和其他構造函數(shù)一樣,如果聲明類的對象的初始化表同轉(zhuǎn)換構造函數(shù)的參數(shù)表相匹配,該函數(shù)就會被調(diào)用。當在需要使用該類的地方使用了別的數(shù)據(jù)類型,便宜器就會調(diào)用轉(zhuǎn)換構造函數(shù)進行轉(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ù)來獲取當前時間,并把它賦給time_t對象;然后程序通過調(diào)用Date類的轉(zhuǎn)換構造函數(shù)來創(chuàng)建一個Date對象,該對象由time_t對象轉(zhuǎn)換而來。time_t對象先傳遞給localtime()函數(shù),然后返回一個指向tm結構(time.h文件中聲明)的指針,然后構造函數(shù)把結構中的日月年的數(shù)值拷貝給Date對象的數(shù)據(jù)成員,這就完成了從time_t對象到Date對象的轉(zhuǎn)換。
【計算機二級C++考點類的轉(zhuǎn)換】相關文章:
C++類的轉(zhuǎn)換10-17
計算機二級考試《C++》復習資料:類的轉(zhuǎn)換08-12
計算機二級C++考點:C++語言概述07-17
計算機二級C++函數(shù)考點07-22
計算機二級《C++》考點解析:堆和類數(shù)組07-20
計算機二級C++考點:基本控制結構10-18
2017計算機二級C++考點習題及答案07-07
C++的類型轉(zhuǎn)換介紹11-08