欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

類中使用定義的類型別名

1 typedef定義類型別名

1.1 使用方法

在C++中,typedef關鍵字用來定義類型的別名。

typedef int MYINT;

此時,MYINT是int的別名,可以將MYINT作為數據類型來定義其他變量。

MYINT myint;

其中,myint的類型是MYINT 。

1.2 注意事項

不能使用typedef對類型別名MYINT進行重復定義。

typedef int MYINT;
typedef double MYINT;

此時,編譯器報錯,報錯信息為“ error C2371: “MYINT”: 重定義;不同的基類型”。

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

2.1 使用方法

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

class MyClass {
? MYINT i;
};

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

2.2 注意事項

在類中可以對類型別名MYINT進行重復定義。

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

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

關于類型別名的總結

數組(本內容摘錄自《C++ Primer 第五版》P205)

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

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

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

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

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

我們使用typedef定義自己的類型。Func和Func2是函數類型,而FuncP和FuncP2是指針類型。需要注意的是,decltype返回函數類型,此時不會將函數類型自動轉換成指針類型。因為decltype的結果是函數類型,所以只有在結果前面加上*才能得到指針。可以使用如下的形式重新聲明useBigger:

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

這兩個聲明語句聲明的是同一個函數,在第一條語句中,編譯器自動地將Func表示的函數類型轉換成指針。

返回指向函數的指針

和數組類似,雖然不能返回一個函數,但是能返回指向函數類型的指針。然而,我們必須把返回類型寫成指針形式,編譯器不會將函數返回類型當成對應的指針類型處理。與往常一樣,要想聲明一個返回函數指針的函數,最簡單的辦法是使用類型別名:

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

其中我們使用類型別名將F定義成函數類型,將PF定義成指向函數類型的指針。必須時刻注意的是,和函數類型的形參不一樣,返回類型不會自動地轉換成指針。我們必須顯式地將返回類型指定為指針:

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • C語言文件讀寫操作介紹與簡單示例

    C語言文件讀寫操作介紹與簡單示例

    這篇文章主要給大家介紹了關于C語言文件讀寫操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • 深入淺出理解C語言指針的綜合應用

    深入淺出理解C語言指針的綜合應用

    指針是指向另一個變量的變量。意思是一個指針保存的是另一個變量的內存地址。換句話說,指針保存的并不是普通意義上的數值,而是另一個變量的地址值。一個指針保存了另一個變量的地址值,就說這個指針“指向”了那個變量
    2022-02-02
  • C語言實現遞歸版掃雷游戲實例

    C語言實現遞歸版掃雷游戲實例

    大家好,本篇文章主要講的是C語言實現遞歸版掃雷游戲實例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • c語言文件讀寫示例(c語言文件操作)

    c語言文件讀寫示例(c語言文件操作)

    這篇文章主要介紹了c語言文件讀寫示例(c語言文件操作),需要的朋友可以參考下
    2014-02-02
  • 基于c++計算矩形重疊面積代碼實例

    基于c++計算矩形重疊面積代碼實例

    這篇文章主要介紹了基于c++計算矩形重疊面積代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • C++中給二維指針分配內存(實現代碼)

    C++中給二維指針分配內存(實現代碼)

    我們都知道在 C++ 中分配動態(tài)數組用的是 new , 撤銷動態(tài)數組用的是 delete[ ] ,現在讓我們來看看怎么利用這兩個關鍵字給二維指針分配內存
    2013-10-10
  • C語言實現哈夫曼樹的方法

    C語言實現哈夫曼樹的方法

    這篇文章主要為大家詳細介紹了C語言實現哈夫曼樹的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 如何為Qt視圖中的文字實現彩虹漸變效果

    如何為Qt視圖中的文字實現彩虹漸變效果

    這篇文章主要給大家介紹了關于如何為Qt視圖中的文字實現彩虹漸變效果的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用Qt具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-03-03
  • C++ 內聯函數inline案例詳解

    C++ 內聯函數inline案例詳解

    這篇文章主要介紹了C++ 內聯函數inline案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • C語言中const,指針和引用的關系

    C語言中const,指針和引用的關系

    這篇文章主要為大家介紹了C語言的const,指針和引用,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評論