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

c++之類型別名的實(shí)現(xiàn)

 更新時(shí)間:2025年02月19日 08:53:58   作者:_DCG_  
本文主要介紹了c++之類型別名的實(shí)現(xiàn),包括C++98版本使用typedef關(guān)鍵字和C++11版本推薦使用using關(guān)鍵字來創(chuàng)建類型別名,具有一定的參考價(jià)值,感興趣的可以了解一下

類型別名,顧名思義就是為一個(gè)類型創(chuàng)建一個(gè)新的名稱,使用這個(gè)新的名稱與使用之前的名稱一模一樣。

c++98版本的類型別名

c++98版本的類型別名方式使用的是typedef關(guān)鍵字,通過typedef關(guān)鍵字實(shí)現(xiàn)的類型別名,下面將展示一些c++98版本的類型別名方式。

//基本類型別名
typedef int Integer;  //不要忘記逗號(hào)
typedef unsigned int UInt; //不要忘記逗號(hào)

//指針類型別名
typedef int* IntPtr;  //不要忘記逗號(hào)
typedef char* CharPtr;  //不要忘記逗號(hào)

//函數(shù)指針別名
typedef void (*FuncPtr)(int, int);  

//復(fù)雜類型別名
typedef std::vector<std::string> StringVector;
typedef std::map<std::string, int> StringIntMap; 

現(xiàn)代c++的類型別名方式

在c++11版本引入了using,通過using實(shí)現(xiàn)類型別名,詳細(xì)的示例如下所示:

//基本類型的類型別名
using Integer = int;
using UInt = unsigned int;

//指針類型的類型別名
using IntPtr = int*;
using CharPtr = char*;

//函數(shù)指針的類型別名
using FuncPtr = void(*)(int, int);

//復(fù)雜類型的類型別名
using StringVector = std::vector<std::string>;
using StringIntMap = std::map<std::string, int>;

為什么引入using?

之所以引入using作為推薦的類型別名方式,是因?yàn)閡sing方式相對(duì)于typedef有著明顯的優(yōu)勢(shì)。

  • 更清晰的語法
typedef void(*FuncPtr)(int, int);  //typedef形式
using FuncPtr = void(*)(int, int);  //using形式,更直觀
  •  模板別名支持

typedef不支持模板別名,但是using支持模板別名。請(qǐng)看下面的例子:

// 使用using可以創(chuàng)建模板別名
template<typename T>
using Vec = std::vector<T>;

// 使用示例
Vec<int> numbers;        // 等價(jià)于 std::vector<int>
Vec<std::string> words;  // 等價(jià)于 std::vector<std::string>

// typedef無法直接實(shí)現(xiàn)模板別名,需要額外包裝
template<typename T>
struct VectorTypedef {
    typedef std::vector<T> type;
};

常見場(chǎng)景

簡(jiǎn)化復(fù)雜類型

很多時(shí)候?qū)懸恍?fù)雜類型的時(shí)候,每次創(chuàng)建該類型的變量或者其他使用該類型的場(chǎng)景,都需要寫很長(zhǎng)的類型名,通過類型別名,我們可以定義一個(gè)簡(jiǎn)短的名字,后續(xù)使用到該類型時(shí),使用這個(gè)別名即可。請(qǐng)看下面的例子:

//簡(jiǎn)化stl容器
using StringSet = std::set<std::string>;
using IntMatrix = std::vector<std::vector<int>>;

// 簡(jiǎn)化智能指針類型
using StringPtr = std::shared_ptr<std::string>;
using IntUPtr = std::unique_ptr<int>;

回調(diào)函數(shù)類型

using ErrorCallback = std::function<void(const std::string&)>;
using EventHandler = std::function<void(const Event&)>;

在類中使用類型別名

class Container {
public:
    using value_type = int;
    using pointer = value_type*;
    using reference = value_type&;
    
    // STL風(fēng)格的類型別名
    using iterator = std::vector<value_type>::iterator;
    using const_iterator = std::vector<value_type>::const_iterator;
private:
    std::vector<value_type> data;
};

注意事項(xiàng)

在c++11及以后的c++版本中推薦使用using,不推薦使用typedef.

到此這篇關(guān)于c++之類型別名的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)c++ 類型別名內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • c++??復(fù)制消除問題解決示例詳析

    c++??復(fù)制消除問題解決示例詳析

    這篇文章主要為大家介紹了c++??復(fù)制消除問題解決示例詳析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Qt編寫地圖實(shí)現(xiàn)動(dòng)態(tài)點(diǎn)位標(biāo)注的示例代碼

    Qt編寫地圖實(shí)現(xiàn)動(dòng)態(tài)點(diǎn)位標(biāo)注的示例代碼

    動(dòng)態(tài)點(diǎn)位標(biāo)注是定制的一個(gè)功能模塊,提供直接地圖上選點(diǎn)設(shè)置標(biāo)記點(diǎn),點(diǎn)位信息用結(jié)構(gòu)體存儲(chǔ),其中包括了經(jīng)度、緯度、速度、時(shí)間等信息。本文將介紹實(shí)現(xiàn)這一功能的示例代碼,需要的可以參考一下
    2022-01-01
  • C語言基礎(chǔ)之C語言格式化輸出函數(shù)printf詳解

    C語言基礎(chǔ)之C語言格式化輸出函數(shù)printf詳解

    這篇文章主要介紹了C語言格式化輸出函數(shù)printf詳解,printf函數(shù)中用到的格式字符與printf函數(shù)中用到的格式修飾符,感興趣的小伙伴可以借鑒一下
    2023-03-03
  • c++調(diào)用python實(shí)現(xiàn)圖片ocr識(shí)別

    c++調(diào)用python實(shí)現(xiàn)圖片ocr識(shí)別

    所謂c++調(diào)用python,實(shí)際上就是在c++中把整個(gè)python當(dāng)作一個(gè)第三方庫(kù)引入,然后使用特定的接口來調(diào)用python的函數(shù)或者直接執(zhí)行python腳本,本文介紹的是調(diào)用python實(shí)現(xiàn)圖片ocr識(shí)別,感興趣的可以了解下
    2023-09-09
  • C++中幾種將整數(shù)轉(zhuǎn)換成二進(jìn)制輸出的方法總結(jié)

    C++中幾種將整數(shù)轉(zhuǎn)換成二進(jìn)制輸出的方法總結(jié)

    下面小編就為大家?guī)硪黄狢++中幾種將整數(shù)轉(zhuǎn)換成二進(jìn)制輸出的方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • QT實(shí)現(xiàn)多文件拖拽獲取路徑的方法

    QT實(shí)現(xiàn)多文件拖拽獲取路徑的方法

    這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)多文件拖拽獲取路徑的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 淺析C++中的函數(shù)重載

    淺析C++中的函數(shù)重載

    這篇文章主要介紹了淺析C++中的函數(shù)重載,在C++中,可以為兩個(gè)或兩個(gè)以上的函數(shù)提供相同的函數(shù)名稱,只要參數(shù)類型不同,或者參數(shù)類型相同而參數(shù)個(gè)數(shù)不同,又或者參數(shù)類型參數(shù)個(gè)數(shù)相同,參數(shù)次序不同,稱為函數(shù)重載,需要的朋友可以參考下
    2023-08-08
  • C++自帶的sort函數(shù)如何對(duì)vector容器元素進(jìn)行排序

    C++自帶的sort函數(shù)如何對(duì)vector容器元素進(jìn)行排序

    這篇文章主要介紹了C++自帶的sort函數(shù)如何對(duì)vector容器元素進(jìn)行排序問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • C++ Boost命令行解析庫(kù)的應(yīng)用詳解

    C++ Boost命令行解析庫(kù)的應(yīng)用詳解

    命令行解析庫(kù)是一種用于簡(jiǎn)化處理命令行參數(shù)的工具,它可以幫助開發(fā)者更方便地解析命令行參數(shù)并提供適當(dāng)?shù)膸椭畔?本文主要介紹了不同的命令行解析庫(kù)和它們?cè)贑++項(xiàng)目中的應(yīng)用,希望對(duì)大家有所幫助
    2023-11-11
  • opencv提取水平與垂直線條

    opencv提取水平與垂直線條

    這篇文章主要為大家詳細(xì)介紹了opencv提取水平與垂直線條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評(píng)論