最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++類中如何使用定義的類型別名

 更新時(shí)間:2022年11月24日 14:24:16   作者:棉猴  
這篇文章主要介紹了C++類中如何使用定義的類型別名,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

類中使用定義的類型別名

1 typedef定義類型別名

1.1 使用方法

在C++中,typedef關(guān)鍵字用來(lái)定義類型的別名。

typedef int MYINT;

此時(shí),MYINT是int的別名,可以將MYINT作為數(shù)據(jù)類型來(lái)定義其他變量。

MYINT myint;

其中,myint的類型是MYINT 。

1.2 注意事項(xiàng)

不能使用typedef對(duì)類型別名MYINT進(jìn)行重復(fù)定義。

typedef int MYINT;
typedef double MYINT;

此時(shí),編譯器報(bào)錯(cuò),報(bào)錯(cuò)信息為“ error C2371: “MYINT”: 重定義;不同的基類型”。

2 在類中使用typedef定義的類型別名

2.1 使用方法

在類中也可以使用“1 typedef定義類型別名”中定義的int的類型別名MYINT。

class MyClass {
? MYINT i;
};

此時(shí),自定義類MyClass的成員變量i的類型是int。

2.2 注意事項(xiàng)

在類中可以對(duì)類型別名MYINT進(jìn)行重復(fù)定義。

typedef int MYINT;
class MyClass {
? MYINT i;
? typedef double MYINT;
? MYINT j;
};

此時(shí),自定義類MyClass的成員變量i的類型是int,而成員變量j的類型是double。

關(guān)于類型別名的總結(jié)

數(shù)組(本內(nèi)容摘錄自《C++ Primer 第五版》P205)

typedef int arrt[10]; ?//arrt是一個(gè)類型別名,
?? ??? ??? ??? ??? ? ? //它表示的類型是含有10個(gè)整數(shù)的數(shù)組
using arrt=int[10];?? ? ? //arrt的等價(jià)聲明
arrt* func(int i);?? ? ? //func返回一個(gè)指向含有10個(gè)整數(shù)的數(shù)組的指針

函數(shù)指針形參(本內(nèi)容摘錄自《C++ Primer 第五版》P222)

/*
*顯式地將形參定義成指向函數(shù)的指針
*/
void useBigger(const string &s1, const string &s2,
?? ??? ??? ??? ?bool (*pf)(const string &,const string &));
bool lengthCompare(const string &, const string &);

正如useBigger的聲明語(yǔ)句所示,直接使用函數(shù)指針類型作形參顯得冗長(zhǎng)而煩瑣。類型別名和decltype能讓我們簡(jiǎn)化使用了函數(shù)指針的代碼:

//Func和Func2是函數(shù)類型
typedef bool Func(const string &, const string &);
typedef decltype(lengthCompare) Func2;?? ??? ??? ?//等價(jià)的類型
//FuncP和FuncP2是指向函數(shù)的指針
typedef bool(*Funcp)(const string &, const string &);
typedef decltype(lengthCompare) *FuncP2;?? ??? ?//等價(jià)的類型

我們使用typedef定義自己的類型。Func和Func2是函數(shù)類型,而FuncP和FuncP2是指針類型。需要注意的是,decltype返回函數(shù)類型,此時(shí)不會(huì)將函數(shù)類型自動(dòng)轉(zhuǎn)換成指針類型。因?yàn)閐ecltype的結(jié)果是函數(shù)類型,所以只有在結(jié)果前面加上*才能得到指針。可以使用如下的形式重新聲明useBigger:

//useBigger的等價(jià)聲明,其中使用了類型別名
void useBigger(const string &, const string &, Func);
void useBigger(const string &, const string &, FuncP2);

這兩個(gè)聲明語(yǔ)句聲明的是同一個(gè)函數(shù),在第一條語(yǔ)句中,編譯器自動(dòng)地將Func表示的函數(shù)類型轉(zhuǎn)換成指針。

返回指向函數(shù)的指針

和數(shù)組類似,雖然不能返回一個(gè)函數(shù),但是能返回指向函數(shù)類型的指針。然而,我們必須把返回類型寫成指針形式,編譯器不會(huì)將函數(shù)返回類型當(dāng)成對(duì)應(yīng)的指針類型處理。與往常一樣,要想聲明一個(gè)返回函數(shù)指針的函數(shù),最簡(jiǎn)單的辦法是使用類型別名:

using F = int(int*, int);?? ??? ?//F是返回類型,不是指針
using PF = int(*)(int*, int);?? ?//PF是指針類型

其中我們使用類型別名將F定義成函數(shù)類型,將PF定義成指向函數(shù)類型的指針。必須時(shí)刻注意的是,和函數(shù)類型的形參不一樣,返回類型不會(huì)自動(dòng)地轉(zhuǎn)換成指針。我們必須顯式地將返回類型指定為指針:

PF f1(int);?? ??? ?//正確:PF是指向函數(shù)的指針,f1返回指向函數(shù)的指針
F f1(int);?? ??? ?//錯(cuò)誤:F是函數(shù)類型,f1不能返回一個(gè)函數(shù)
F *f1(int);?? ??? ?//正確:顯式地指定返回類型是指向函數(shù)的指針

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++實(shí)現(xiàn)strcpy函數(shù)實(shí)例

    C++實(shí)現(xiàn)strcpy函數(shù)實(shí)例

    這篇文章主要介紹了C++實(shí)現(xiàn)strcpy函數(shù)實(shí)例,步驟講解的很詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,感興趣的朋友跟隨小編一起來(lái)研究吧
    2020-12-12
  • C++回溯算法之深度優(yōu)先搜索詳細(xì)介紹

    C++回溯算法之深度優(yōu)先搜索詳細(xì)介紹

    回溯在迷宮搜索中使用很常見(jiàn),就是這條路走不通,然后返回前一個(gè)路口,繼續(xù)下一條路?;厮菟惴ㄕf(shuō)白了就是窮舉法,下面讓我們一起來(lái)看看回溯算法中深度優(yōu)先搜索吧
    2023-01-01
  • 詳細(xì)解讀C++編程中的匿名類類型和位域

    詳細(xì)解讀C++編程中的匿名類類型和位域

    這篇文章主要介紹了C++編程中的匿名類類型和位域,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-01-01
  • 詳解C語(yǔ)言之文件操作下)

    詳解C語(yǔ)言之文件操作下)

    這篇文章主要介紹了關(guān)于C語(yǔ)言文件操作方法的相關(guān)資料,小編覺(jué)得這篇文章寫的還不錯(cuò),需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • C語(yǔ)言實(shí)戰(zhàn)之紙牌游戲

    C語(yǔ)言實(shí)戰(zhàn)之紙牌游戲

    這篇文章主要為大家介紹了通過(guò)C語(yǔ)言實(shí)現(xiàn)的紙牌游戲的示例代碼,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定的幫助,感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下
    2021-12-12
  • c++中為什么不提倡使用vector示例詳解

    c++中為什么不提倡使用vector示例詳解

    這篇文章主要給大家介紹了關(guān)于c++中為什么不提倡使用vector的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用c++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • C++實(shí)現(xiàn)二叉樹(shù)非遞歸遍歷方法實(shí)例總結(jié)

    C++實(shí)現(xiàn)二叉樹(shù)非遞歸遍歷方法實(shí)例總結(jié)

    這篇文章主要介紹了C++實(shí)現(xiàn)二叉樹(shù)非遞歸遍歷方法實(shí)例總結(jié),是算法設(shè)計(jì)中比較經(jīng)典的一個(gè)遍歷算法,需要的朋友可以參考下
    2014-08-08
  • C語(yǔ)言實(shí)現(xiàn)單鏈表的快速排序算法

    C語(yǔ)言實(shí)現(xiàn)單鏈表的快速排序算法

    大家好,本篇文章主要講的是C語(yǔ)言實(shí)現(xiàn)單鏈表的快速排序算法,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • C++實(shí)現(xiàn)教工考勤信息管理系統(tǒng)

    C++實(shí)現(xiàn)教工考勤信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)教工考勤信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C語(yǔ)言中數(shù)組的使用詳解

    C語(yǔ)言中數(shù)組的使用詳解

    這篇文章主要為大家介紹了C語(yǔ)言中數(shù)組的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12

最新評(píng)論

县级市| 盘山县| 蒙阴县| 阿尔山市| 岳阳市| 泽州县| 志丹县| 莎车县| 麦盖提县| 四子王旗| 胶南市| 高密市| 会理县| 鲁山县| 苏尼特右旗| 南江县| 武清区| 麻江县| 泗水县| 电白县| 乳山市| 忻州市| 阿坝县| 尚志市| 江口县| 都昌县| 镇平县| 哈巴河县| 安义县| 潢川县| 花垣县| 双辽市| 潜江市| 英超| 普格县| 江阴市| 延吉市| 乐山市| 万山特区| 寻乌县| 竹山县|