亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++11新特性之auto的使用

2020-01-26 14:22:19
字體:
來源:轉載
供稿:網友

前言

C++是一種強類型語言,聲明變量時必須明確指出其類型。但是,在實踐中,優勢我們很難推斷出某個表達式的值的類型,尤其是隨著模板類型的出現,要想弄明白某些復雜表達式的返回類型就變得更加困難。為了解決這個問題,C++11中引入的auto主要有兩種用途:自動類型推斷和返回值占位。auto在C++98中的標識臨時變量的語義,由于使用極少且多余,在C++11中已被刪除。前后兩個標準的auto,完全是兩個概念。

一、自動類型推斷

auto自動類型推斷,用于從初始化表達式中推斷出變量的數據類型。通過auto的自動類型推斷,可以大大簡化我們的編程工作。下面是一些使用auto的例子。

#include <vector> #include <map>  using namespace std;  int main(int argc, char *argv[], char *env[]) { // auto a;  // 錯誤,沒有初始化表達式,無法推斷出a的類型 // auto int a = 10; // 錯誤,auto臨時變量的語義在C++11中已不存在, 這是舊標準的用法。   // 1. 自動幫助推導類型  auto a = 10;  auto c = 'A';  auto s("hello");   // 2. 類型冗長  map<int, map<int,int> > map_;  map<int, map<int,int>>::const_iterator itr1 = map_.begin();  const auto itr2 = map_.begin();  auto ptr = []()  {  std::cout << "hello world" << std::endl;  };   return 0; };  // 3. 使用模板技術時,如果某個變量的類型依賴于模板參數, // 不使用auto將很難確定變量的類型(使用auto后,將由編譯器自動進行確定)。 template <class T, class U> void Multiply(T t, U u) {  auto v = t * u; } 

二、返回值占位

template <typename T1, typename T2> auto compose(T1 t1, T2 t2) -> decltype(t1 + t2) {  return t1+t2; } auto v = compose(2, 3.14); // v's type is double 

三、使用注意事項

1、我們可以使用valatilepointer(*) ,reference(&)rvalue reference(&&) 來修飾auto

auto k = 5; auto* pK = new auto(k); auto** ppK = new auto(&k); const auto n = 6; 

2、用auto聲明的變量必須初始化

auto m; // m should be intialized 

3、auto不能與其他類型組合連用

auto int p; // 這是舊auto的做法。 

4、函數和模板參數不能被聲明為auto

void MyFunction(auto parameter){} // no auto as method argument  template<auto T> // utter nonsense - not allowed void Fun(T t){} 

5、定義在堆上的變量,使用了auto的表達式必須被初始化

int* p = new auto(0); //fine int* pp = new auto(); // should be initialized  auto x = new auto(); // Hmmm ... no intializer  auto* y = new auto(9); // Fine. Here y is a int* auto z = new auto(9); //Fine. Here z is a int* (It is not just an int) 

6、以為auto是一個占位符,并不是一個他自己的類型,因此不能用于類型轉換或其他一些操作,如sizeof和typeid

int value = 123; auto x2 = (auto)value; // no casting using auto  auto x3 = static_cast<auto>(value); // same as above 

7、定義在一個auto序列的變量必須始終推導成同一類型

auto x1 = 5, x2 = 5.0, x3='r'; // This is too much....we cannot combine like this 

8、auto不能自動推導成CV-qualifiers(constant & volatile qualifiers),除非被聲明為引用類型

const int i = 99; auto j = i; // j is int, rather than const int j = 100 // Fine. As j is not constant  // Now let us try to have reference auto& k = i; // Now k is const int& k = 100; // Error. k is constant  // Similarly with volatile qualifer 

9、auto會退化成指向數組的指針,除非被聲明為引用

int a[9]; auto j = a; cout<<typeid(j).name()<<endl; // This will print int*  auto& k = a; cout<<typeid(k).name()<<endl; // This will print int [9] 

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者使用C++能有一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91夜夜未满十八勿入爽爽影院| 国产一区二区三区在线视频| 日韩av不卡电影| 欧美野外猛男的大粗鳮| 狠狠色香婷婷久久亚洲精品| 国产精品成人国产乱一区| 精品免费在线观看| 久久久亚洲精选| 久久久久久久av| 亚洲性av网站| yw.139尤物在线精品视频| 91精品国产99久久久久久| 欧美风情在线观看| 国产香蕉97碰碰久久人人| 亚洲国产99精品国自产| 国产精品电影网| 亚洲a区在线视频| 久久香蕉频线观| 国产精品流白浆视频| 97在线观看免费| 午夜精品99久久免费| 91国产精品视频在线| 色一区av在线| 国产精品自产拍在线观| 日韩精品在线第一页| 欧美华人在线视频| 国产美女精彩久久| 欧美日韩亚洲一区二区三区| 欧美中文字幕第一页| 久久乐国产精品| 欧美激情国产日韩精品一区18| 国产日韩换脸av一区在线观看| 日韩av免费网站| 亚洲电影在线看| 国产日产久久高清欧美一区| 92国产精品久久久久首页| 久久精品国产2020观看福利| 亚洲深夜福利网站| 精品视频在线观看日韩| 精品国产乱码久久久久久虫虫漫画| 日韩中文字幕免费视频| 国产91在线播放九色快色| 亚洲国产精品专区久久| 久久久之久亚州精品露出| 久久久91精品国产| 亚洲精品97久久| 综合网中文字幕| 欧美亚洲视频一区二区| 欧美黄网免费在线观看| 久久精品久久久久久国产 免费| 日韩精品免费观看| 伊人亚洲福利一区二区三区| 中文在线资源观看视频网站免费不卡| 国内成人精品一区| 97在线观看免费高清| 精品成人久久av| 国产免费一区二区三区香蕉精| 日韩福利视频在线观看| 中文字幕亚洲自拍| 国产精品最新在线观看| 亚洲一区av在线播放| 欧美一级片在线播放| 91免费视频网站| 精品无人区乱码1区2区3区在线| 欧美在线国产精品| 亚洲成人激情在线观看| 国产丝袜视频一区| 国产欧美精品日韩精品| 毛片精品免费在线观看| 亚洲成人精品在线| 国产精品第2页| 91视频免费在线| 另类专区欧美制服同性| 亚洲第一综合天堂另类专| 日韩在线视频网站| 2021久久精品国产99国产精品| 色婷婷综合久久久久中文字幕1| 亚洲新中文字幕| 亚洲欧洲在线观看| 97在线观看视频| 亚洲人成人99网站| 久久影视电视剧免费网站清宫辞电视| 成人444kkkk在线观看| 琪琪亚洲精品午夜在线| 亚洲国产日韩欧美综合久久| 精品亚洲aⅴ在线观看| 亚州成人av在线| 国产精品日韩在线一区| 国产91亚洲精品| 日韩成人av网址| 91网站免费观看| 不用播放器成人网| 日韩中文字幕久久| 亚洲欧美中文日韩v在线观看| 亚洲精品自产拍| 久久激情视频久久| 九九精品视频在线观看| 亚洲女人天堂av| 亚洲国产私拍精品国模在线观看| 欧美日韩在线影院| 国产在线精品成人一区二区三区| 久久这里有精品| 久久久精品久久久| 久久精品福利视频| 日韩精品有码在线观看| 国产69精品久久久| 亚洲一级一级97网| 亚洲午夜国产成人av电影男同| 精品国产一区av| 欧美裸体xxxx极品少妇| 国产精品扒开腿做爽爽爽视频| 亚洲国产精品网站| 日韩av免费在线观看| 精品一区二区三区三区| 欧美激情中文网| 成人欧美一区二区三区在线湿哒哒| 欧美最猛性xxxx| 国产综合在线视频| 91麻豆桃色免费看| 在线看片第一页欧美| 日韩经典一区二区三区| 亚洲石原莉奈一区二区在线观看| 久久久久久久久国产精品| 日韩精品在线免费观看视频| 日日骚久久av| 欧美性受xxx| 成人www视频在线观看| 精品视频在线播放色网色视频| 2019国产精品自在线拍国产不卡| 欧美黑人视频一区| 亚洲伊人第一页| 欧美日韩成人在线视频| 欧美性色19p| 久久精品中文字幕免费mv| 国产精品九九久久久久久久| 亚洲欧美日韩综合| 在线日韩第一页| 成人精品在线观看| 久久99久国产精品黄毛片入口| 久久九九国产精品怡红院| 一区二区三欧美| 欧美丝袜第一区| 国产精品精品国产| 日韩电影中文字幕在线| 一个人看的www欧美| 欧美三级免费观看| 久久成人18免费网站| 亚洲欧美变态国产另类| 日本精品在线视频| 91豆花精品一区| 欧美激情区在线播放| 波霸ol色综合久久| 欧美日韩国产成人| 久久久精品国产一区二区| 欧美另类高清videos| 色综合伊人色综合网| 成人久久一区二区| 91夜夜揉人人捏人人添红杏| 91久久精品日日躁夜夜躁国产| 国内精品在线一区| 日韩男女性生活视频| 91亚洲一区精品| 中文国产亚洲喷潮| 精品女厕一区二区三区|