奶头从情趣内衣下露了出来AV _亚洲色成人网一二三区_欧美日韩精品成人网站二区A∨有_娇妻被朋友玩得呻吟在线电影_中文字幕人妻熟在线影院_日本Α片无遮挡在线观看_久久精品国产亚洲AV蜜臀色欲_猫咪AV最新永久网址无码_亚洲AV无码AV制服另类专区

全國統(tǒng)一學(xué)習(xí)專線 8:30-21:00

課程導(dǎo)航
更多

位置:用考培訓(xùn)網(wǎng) > 計算機類>程序員> 計算機二級C++程序考試知識點之類的轉(zhuǎn)換

計算機二級C++程序考試知識點之類的轉(zhuǎn)換

logo
來源:考試吧

2019-02-15 15:07:06

進入 >

類的轉(zhuǎn)換

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

對一個類建立隱式轉(zhuǎn)換規(guī)則需要構(gòu)造一個轉(zhuǎn)換函數(shù),該函數(shù)作為類的成員,可以把該類的對象和其他數(shù)據(jù)類型的對象進行相互轉(zhuǎn)換。聲明了轉(zhuǎn)換函數(shù),就告訴了編譯器,當(dāng)根據(jù)句法判定需要類型轉(zhuǎn)換時,就調(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òu)造函數(shù)僅有一個參數(shù),且該參數(shù)是不同于該類的一個數(shù)據(jù)類型,這樣的構(gòu)造函數(shù)就叫轉(zhuǎn)換構(gòu)造函數(shù)。轉(zhuǎn)換構(gòu)造函數(shù)把別的數(shù)據(jù)類型的對象轉(zhuǎn)換為該類的一個對象。和其他構(gòu)造函數(shù)一樣,如果聲明類的對象的初始化表同轉(zhuǎn)換構(gòu)造函數(shù)的參數(shù)表相匹配,該函數(shù)就會被調(diào)用。當(dāng)在需要使用該類的地方使用了別的數(shù)據(jù)類型,便宜器就會調(diào)用轉(zhuǎn)換構(gòu)造函數(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ù)來獲取當(dāng)前時間,并把它賦給time_t對象;然后程序通過調(diào)用Date類的轉(zhuǎn)換構(gòu)造函數(shù)來創(chuàng)建一個Date對象,該對象由time_t對象轉(zhuǎn)換而來。time_t對象先傳遞給localtime()函數(shù),然后返回一個指向tm結(jié)構(gòu)(time.h文件中聲明)的指針,然后構(gòu)造函數(shù)把結(jié)構(gòu)中的日月年的數(shù)值拷貝給Date對象的數(shù)據(jù)成員,這就完成了從time_t對象到Date對象的轉(zhuǎn)換。

二、成員轉(zhuǎn)換函數(shù)

成員轉(zhuǎn)換函數(shù)把該類的對象轉(zhuǎn)換為其他數(shù)據(jù)類型的對象。在成員轉(zhuǎn)換函數(shù)的聲明中要用到關(guān)鍵字operator。這樣聲明一個成員轉(zhuǎn)換函數(shù):

operator aaa();

在這個例子中,aaa就是要轉(zhuǎn)換成的數(shù)據(jù)類型的說明符。這里的類型說明符可以是任何合法的C++類型,包括其他的類。如下來定義成員轉(zhuǎn)換函數(shù);

Classname::operator aaa()

類名標(biāo)識符是聲明了該函數(shù)的類的類型說明符。上面定義的Date類并不能把該類的對象轉(zhuǎn)換回time_t型變量,但可以把它轉(zhuǎn)換成一個長整型值,計算從2000年1月1日到現(xiàn)在的天數(shù)。

#include iostream.h

class Date

{

int mo,da,yr;

public:

Date(int m,int d,int y) {mo=m; da=d; yr=y;}

operator int(); //聲明

};

Date::operator int() //定義

{

static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31};

int days=yr-2000;

days*=365;

days+=(yr-2000)/4;

for(int i=0;i days+=dys[i];

days+=da;

return days;

}

int main()

{

Date now(12,24,2003);

int since=now;

cout< return 0;

}

三、類的轉(zhuǎn)換

上面兩個例子都是C++類對象和內(nèi)部數(shù)據(jù)對象之間的相互轉(zhuǎn)換。也可以定義轉(zhuǎn)換函數(shù)來實現(xiàn)兩個類對象之間的相互轉(zhuǎn)換。

#include iostream.h

class CustomDate

{

public:

int da, yr;

CustomDate(int d=0,int y=0) {da=d; yr=y;}

void display()

{

cout< }

};

class Date

{

int mo, da, yr;

public:

Date(int m=0,int d=0,int y=0) {mo=m; da=d; yr=y;}

Date(const CustomDate&); //轉(zhuǎn)換構(gòu)造函數(shù)

operator CustomDate(); //成員轉(zhuǎn)換函數(shù)

void display()

{

cout< }

};

static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};

Date::Date(const CustomDate& jd)

{

yr=jd.yr;

da=jd.da;

for(mo=0;mo<11;mo++)

if(da>dys[mo]) da-=dys[mo];

else break;

mo++;

}

Date::operator CustomDate()

{

CustomDate cd(0,yr);

for(int i=0;i cd.da+=da;

return cd;

}

int main()

{

Date dt(12,24,3);

CustomDate cd;

cd = dt; //調(diào)用成員轉(zhuǎn)換函數(shù)

cd.display();

dt = cd; //調(diào)用轉(zhuǎn)換構(gòu)造函數(shù)

dt.display();

return 0;

}

這個例子中有兩個類CustomDate和Date,CustomDate型日期包含年份和天數(shù)。

這個例子沒有考慮閏年情況。但是在實際構(gòu)造一個類時,應(yīng)該考慮到所有問題的可能性。

在Date里中具有兩種轉(zhuǎn)換函數(shù),這樣,當(dāng)需要從Date型變?yōu)镃ustomDate型十,可以調(diào)用成員轉(zhuǎn)換函數(shù);反之可以調(diào)用轉(zhuǎn)換構(gòu)造函數(shù)。

不能既在Date類中定義成員轉(zhuǎn)換函數(shù),又在CustomDate類里定義轉(zhuǎn)換構(gòu)造函數(shù)。那樣編譯器在進行轉(zhuǎn)換時就不知道該調(diào)用哪一個函數(shù),從而出錯.

四、轉(zhuǎn)換函數(shù)的調(diào)用

C++里調(diào)用轉(zhuǎn)換函數(shù)有三種形式:第一種是隱式轉(zhuǎn)換,例如編譯器需要一個Date對象,而程序提供的是CustomDate對象,編譯器會自動調(diào)用合適的轉(zhuǎn)換函數(shù)。另外兩種都是需要在程序代碼中明確給出的顯式轉(zhuǎn)換。C++強制類型轉(zhuǎn)換是一種,還有一種是顯式調(diào)用轉(zhuǎn)換構(gòu)造函數(shù)和成員轉(zhuǎn)換函數(shù)。下面的程序給出了三中轉(zhuǎn)換形式:

#include iostream.h

class CustomDate

{

public:

int da, yr;

CustomDate(int d=0,int y=0) {da=d; yr=y;}

void display()

{

cout< }

};

class Date

{

int mo, da, yr;

public:

Date(int m,int d,int y)

{

mo=m; da=d; yr=y;

}

operator CustomDate();

};

Date::operator CustomDate()

{

static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31};

CustomDate cd(0,yr);

for(int i=0;i cd.da+=da;

return cd;

}

int main()

{

Date dt(11,17,89);

CustomDate cd;

cd = dt;

cd.display();

cd = (CustomDate) dt;

cd.display();

cd = CustomDate(dt);

cd.display();

return 0;

}

五、轉(zhuǎn)換發(fā)生的情形

上面的幾個例子都是通過不能類型對象之間的相互賦值來調(diào)用轉(zhuǎn)換函數(shù),還有幾種調(diào)用的可能:

參數(shù)傳遞

初始化

返回值

表達式語句

這些情況下,都有可能調(diào)用轉(zhuǎn)換函數(shù)。

下面的程序不難理解,就不分析了。

#include iostream.h

class CustomDate

{

public:

int da, yr;

CustomDate() {}

CustomDate(int d,int y) { da=d; yr=y;}

void display()

{

cout< }

};

class Date

{

int mo, da, yr;

public:

Date(int m,int d,int y) { mo=m; da=d; yr=y; }

operator CustomDate();

};

Date::operator CustomDate()

{

static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31};

CustomDate cd(0,yr);

for (int i=0;i cd.da+=da;

return cd;

}

class Tester

{

CustomDate cd;

public:

explicit Tester(CustomDate c) { cd=c; }

void display() { cd.display(); }

};

void dispdate(CustomDate cd)

{

cd.display();

}

CustomDate rtndate()

{

Date dt(9,11,1);

return dt;

}

int main()

{

Date dt(12,24,3);

CustomDate cd;

cd = dt;

cd.display();

dispdate(dt);

Tester ts(dt);

ts.display();

cd = rtndate();

cd.display();

return 0;

}

六、顯式構(gòu)造函數(shù)

注意上面Tester類的構(gòu)造函數(shù)前面有一個explicit修飾符。如果不加上這個關(guān)鍵字,那么在需要把CustomDate對象轉(zhuǎn)換成Tester對象時,編譯器會把該函數(shù)當(dāng)作轉(zhuǎn)換構(gòu)造函數(shù)來調(diào)用。但是有時候,并不想把這種只有一個參數(shù)的構(gòu)造函數(shù)用于轉(zhuǎn)換目的,而僅僅希望用它來顯式地初始化對象,此時,就需要在構(gòu)造函數(shù)前加explicit。如果在聲明了Tester對象以后使用了下面的語句將導(dǎo)致一個錯誤:

ts=jd; //error

這個錯誤說明,雖然Tester類中有一個以Date型變量為參數(shù)的構(gòu)造函數(shù),編譯器卻不會把它看作是從Date到Tester的轉(zhuǎn)換構(gòu)造函數(shù),因為它的聲明中包含了explicit修飾符。

七、表達式內(nèi)部的轉(zhuǎn)換

在表達式內(nèi)部,如果發(fā)現(xiàn)某個類型和需要的不一致,就會發(fā)生錯誤。數(shù)字類型的轉(zhuǎn)換是很簡單,這里就不舉例了。下面的程序是把Date對象轉(zhuǎn)換成長整型值。

#include iostream.h

class Date

{

int mo, da, yr;

public:

Date(int m,int d,int y)

{

mo=m; da=d; yr=y;

}

operator long();

};

Date::operator long()

{

static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31};

long days=yr;

days*=365;

days+=(yr-1900)/4; //從1900年1月1日開始計算

for(int i=0;i days+=da;

return days;

}

int main()

{

Date today(12,24,2003);

const long ott=123;

long sum=ott+today;

cout< return 0;

}

在表達式中,當(dāng)需要轉(zhuǎn)換的對象可以轉(zhuǎn)換成某個數(shù)字類型,或者表達式調(diào)用了作用于某個類的重載運算符時,就會發(fā)生隱式轉(zhuǎn)換。

以上就是小編為您整理計算機二級C++程序考試知識點之類的轉(zhuǎn)換的全部內(nèi)容,更多精彩請進入程序員欄目查看

  • 推薦課程
  • 相關(guān)學(xué)校
  • 相關(guān)文章
預(yù)約免費試聽

只要一個電話
我們免費為您回電

www.comAV在线观看| EEUSS影院在线观看| 中文无码字幕一区到五区免费| 伊人久久大香线蕉综合网站 | 丰满熟妇人妻中文字幕| 国产成人精品午夜视频 | 亚洲 欧洲 日产 经典| 精品少妇爆乳无码AⅤ区| 久久香蕉国产线看观看手机 | 亚洲日韩精品欧美一区二区一| 一区二区无码在线视频| A区B区C区D区乱码| 丰满圆润大胸在线| 果冻传媒MV免费播放在线观看| 久久久久久精品精品免费| 欧美XXXxX高潮喷水| 色欲AV蜜桃一区二区三| 亚洲AV日韩AⅤ无码网站| 亚洲最大AV资源站无码AV网址| 99精品人妻少妇一区二区| 粗大在少妇体内进进出出| 国产乱人伦偷精品视频免下载| 精品少妇无码一区二区三批| 男女啪啪永久免费网站| 日本适合十八岁以上人群的护肤品| 无码AV人片在线观看天堂| 亚洲欧美成人在线| CHINESE中国丰满熟妇| 国产成人精品一区二区秒拍| 精品国产一区二区三区不卡在线| 男配每天都在体内成结节| 色哟哟网站在线观看| 亚洲国产精品成人网址天堂| 400部精品国偷自产在线| 国产AV露脸一线国语对白| 精品一区二区三区在线成人| 欧美高清VIDEOS36OP| 无码少妇一区二区三区| 夜夜骚Av一区二区精品无码区| 波多野结衣 片子| 韩国无码AV片在线观看| 女教师办公室被强在线播放| 无码毛片一区二区三区本码视频| 野草高清视频免费| 东京热人妻系列无码专区| 精品人妻潮喷久久久又裸又黄| 欧美综合自拍亚洲图久青草| 亚洲AV成人AV天堂| 99国产精品永久免费视频| 国产精品久久国产三级国不卡顿| 老赵抱着月月在厨房做视频| 熟妇人妻av无码一区二区三区 | 亚洲色精品AⅤ一区区三区| 办公室的交易HD在线观看| 狠狠色噜噜狠狠狠888米奇| 欧美整片欧洲熟妇色视频| 亚洲AV性色在线观看| 把腿张开老子臊烂你的小说| 好紧我太爽了视频免费| 精品国产乱码久久久久软件 | 婷婷四月开心色房播播| 13小男生GAY自慰脱裤子| 成年女人毛片免费观看97| 激情内射日本一区二区三区| 麻豆精产国品一二三产区区| 日韩在线 | 中文| 无码人妻久久久久一区二区三区91| 中国在线观看免费国语版| 八戒八戒看片在线WWW看| WWW.一区二区三区在线 || 妇女被深耕过后的变化| 国精品99久9在线 | 免费| 麻豆人妻少妇精品无码专区| 日韩AV无码午夜免费福利制服 | 草草影院精品一区二区三区| 欧美成人精品视频在线观看| 天堂SV在线最新版在线| 亚洲国产精品久久久久爰| 中国CHINESE壮男GⅤ军警| 国产亚洲精久久久久久无码蜜桃| 免费观看18禁欲无遮挡奶水下 | 色天使色偷偷色噜噜噜| 午夜无码片在线观看影视| 再深点灬舒服灬太大了少妇| 富婆偷人对白又粗又大视频| 可播放的免费男同GAY| 亚洲国产精品热久久| 部长的夫人的味道HD| 欧美疯狂做受XXXXX高潮| 撕开奶罩揉吮奶头高潮视频| 中文字幕日韩人妻在线乱码| 国产乱妇乱子视频在播放| 污的你下面一直滴水的句子| 玉蒲团Ⅲ艳乳欲仙| 被黑人巨茎日出白浆的少妇| 欧美精品99久久久啪啪| 亚洲愉拍自拍欧美精品| 久久久久精品少妇9999| 亚洲久悠悠色悠在线播放| 暴躁老阿姨CSGO| 欧美一区精品视频一区二区| 中国BGMBGMBGM老妇网站| 人妻系列无码专区无码中出| 亚洲日本中文字幕乱码在线| 国产精品爱久久久久久久小说| 欧洲精品码一区二区三区| 野花社区WWW高清图片| 国模无码视频一区二区三区| 四川丰满少妇被弄到高潮| ワンピースのエロ官网| 妺妺窝人体色WWW美女| 野花日本大全免费观看10电影| 黑料吃瓜网998.SU永久有效| 天天影视性色香欲综合网| 被黑人猛烈30分钟视频| 欧美人伦禁忌DVD放荡欲情| 中文字幕无码一区二区免费| 久久人妻AV无码中文专区| 亚洲丰满熟妇乱XXXXX网站| 国产精品成人久久电影| 日韩日韩日韩日韩 日韩 日韩| 中文字幕高清免费日韩视频在线 | 成人免费视频无码专区| 欧美性大片XXXXX久久久| 中文字幕有码无码人妻AV蜜桃| 久久亚洲精品成人无码| 亚洲综合网国产精品一区| 精品国产一区二区三区不卡| 亚洲AV无码专区在线观看亚| 国产亚洲欧美日韩俺去了| 午夜男女无遮挡啪拍视频 | 色噜噜狠狠色综合日日| 催眠性指导OVA1一6集| 日韩欧美人妻一区二区三区| 成人国内精品视频在线观看| 日本一道综合久久AⅤ久久| 成av人片一区二区三区久久| 日韩欧美亚洲综合久久影院DS| 成人片在线观看地址KK4444| 日本水蜜桃身体乳的美白效果| 成为人视频人的APP有哪些软件| 日韩综合亚洲色在线影院| 隔着衣服吃你的小尖尖作文| 四虎成人精品国产永久免费无码| 国产成人啪精品视频免费APP| 我和岳乱妇三级高清电影| 国产精品爽爽V在线观看无码| 亚洲 欧美 中文 日韩AⅤ| 狠狠色丁香婷婷综合潮喷| 亚洲欧美精品水蜜桃| 久久久亚洲欧洲日产国码是AV| 已婚少妇美妙人妻系列| 女的用嘴巴吃鸡会得HPV| 啊灬啊灬啊灬快灬深视频无遮掩 | 午夜性影院爽爽爽爽爽爽| 果冻传媒蜜桃传媒精东豆| 亚洲欧美日韩愉拍自拍| 鲁丝片一区二区三区免费| 99久久综合狠狠综合久久止 | 河南妇女毛深深的沟WCD| 亚洲综合无码久久精品综合 | 欧美肉体裸交做爰XXXⅩ性玉蒲| 把她送上一个又一个巅峰| 少妇人妻系列无码专区视频| 中文字幕色偷偷人妻久久| 双人床上做剧烈运动可以吗| 亚洲裸男GAY自慰网站| 乱码中字在线观看一二区| C交人Z000Z000XXⅩ| 色综合天天综合网国产| 国产亚洲精品精华液| 亚洲一区精品人人爽人人躁 | 亚洲日韩AV成人无码| 美女扒开腿让男人桶爽免费| 啊灬啊灬啊灬快灬深用力 | 精品亚洲AⅤ无码午夜在线| 中日韩精品无码一区二区三区| 人妻AV鲁丝一区二区三区蜜臀| 国产二级一片内射视频插放| 亚洲精品国产精品乱码视色| 免费直播视频在线观看| 豆国产96在线 | 亚洲| 亚洲成av人片在线观看无码| 蜜臀av一区二区三区人妻| 不文女学堂在线观看| 亚洲AV激情无码专区在线下载| 久久婷婷五月综合色国产免费观看 | 狠狠躁天天躁夜夜躁婷婷| 中文字幕人妻中文AV不卡专区 | 午夜天堂一区人妻| 国产乱人伦AⅤ在线麻豆A| 丰满的熟妇人妻中文字幕久久| 日韩精品一区二区三区影院| 国产亚洲成AⅤ人片在线观看麻豆 国产亚洲成AⅤ人片在线观看 | 色妺妺AⅤ爽爽影院偷拍| 娇妻被朋友玩得呻吟在线电影| 97国产精华最好的产品在线 | 午夜A级理论片在线播放琪琪| 久久免费看少妇高潮V片特黄| 成人精品视频一区二区三区尤物 |