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

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

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

2020-05-23 13:58:35
字體:
來源:轉載
供稿:網友

前言

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
亚洲香蕉av在线一区二区三区| 热99久久精品| 51ⅴ精品国产91久久久久久| 91爱视频在线| 国产乱人伦真实精品视频| 国产91精品久久久久久久| 国产精品一二三在线| 一级做a爰片久久毛片美女图片| 亚洲国产精彩中文乱码av在线播放| 亚洲欧美综合区自拍另类| 日韩精品免费在线| 亚洲色图15p| 欧美午夜激情小视频| 中文字幕av一区二区三区谷原希美| 日韩av不卡电影| 日韩av在线导航| 操91在线视频| 欧美国产一区二区三区| 国产精品黄页免费高清在线观看| 欧美xxxx做受欧美.88| 午夜精品久久久久久久99热| 欧美刺激性大交免费视频| 国产精品色悠悠| 国产99久久精品一区二区| 久久久国产一区二区三区| 国内精品免费午夜毛片| 欧洲日韩成人av| 精品高清一区二区三区| 国产精品视频999| 精品国产自在精品国产浪潮| 亚洲网站在线播放| 在线日韩日本国产亚洲| 日韩欧美一区二区三区| 亚洲美女又黄又爽在线观看| 国产精品一区专区欧美日韩| 国产精品久久一区主播| 久久久久久九九九| 亚洲v日韩v综合v精品v| 亚洲色图17p| 91久久精品国产91久久性色| 色偷偷88888欧美精品久久久| 久久精品人人做人人爽| 日韩欧美中文第一页| 毛片精品免费在线观看| 91精品国产91久久久| 69av在线播放| 欧美中文字幕第一页| 久久99精品国产99久久6尤物| 亚洲欧美日本伦理| 亚洲精品久久久一区二区三区| 亚洲精品资源美女情侣酒店| 一本色道久久综合亚洲精品小说| 欧美专区福利在线| 欧美亚洲国产精品| 国产精品直播网红| 国产日产欧美精品| 久久天天躁狠狠躁老女人| 亚洲久久久久久久久久久| 精品精品国产国产自在线| 国产午夜精品麻豆| 亚洲深夜福利视频| 亚洲第一av网站| 综合网日日天干夜夜久久| 国内免费精品永久在线视频| 久久成人精品一区二区三区| 精品综合久久久久久97| 国产欧美日韩中文| 影音先锋日韩有码| 日韩美女免费线视频| 欧美一二三视频| 亚洲精品一二区| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲美女黄色片| 精品福利一区二区| www高清在线视频日韩欧美| 精品少妇一区二区30p| wwwwwwww亚洲| 中文字幕在线精品| 一个人www欧美| 日本高清视频精品| 日韩精品高清在线观看| 国产99久久久欧美黑人| 亚洲福利视频免费观看| 欧美电影电视剧在线观看| 日韩精品999| 国产xxx69麻豆国语对白| 欧美日韩国产精品专区| 九九热这里只有精品6| 久久国产精品网站| 亚洲精品aⅴ中文字幕乱码| 色婷婷久久一区二区| 欧美另类极品videosbest最新版本| 国产主播喷水一区二区| 91精品久久久久久久久久久久久| 91国内揄拍国内精品对白| 91久久国产精品91久久性色| 欧美劲爆第一页| 91综合免费在线| zzjj国产精品一区二区| 国产精品99免视看9| 亚洲最大av在线| 欧美影院久久久| 91精品国产成人www| 国产98色在线| 欧美在线精品免播放器视频| 国产精品日韩专区| 亚洲一区二区福利| 久久久久久久久久国产精品| 国产精品久久久久久久久久99| 一区二区三区www| 久久久免费观看视频| 欧美精品日韩www.p站| 国产精品久久激情| 久久国产精品亚洲| 国产精品久久久久久av福利软件| 国产精品美女午夜av| 国产日韩欧美电影在线观看| 欧美激情综合亚洲一二区| 91亚洲精品久久久| 91精品久久久久久久久久久久久| 在线观看国产精品日韩av| 91免费在线视频网站| 亚洲精品在线看| 久久精品国产免费观看| 韩国精品久久久999| 亚洲第一区在线观看| xxx一区二区| 中文字幕欧美日韩在线| 91精品啪aⅴ在线观看国产| 欧美精品激情视频| 精品视频久久久久久久| 欧美黑人性生活视频| 日韩性xxxx爱| 国产精品久久久久久久久久三级| 自拍偷拍亚洲在线| 免费av在线一区| 亚洲精品美女在线观看播放| 欧美成aaa人片免费看| 日韩精品在线视频美女| 一区二区欧美亚洲| 欧美中文字幕精品| 日韩成人中文字幕| 国产美女精品免费电影| 欧美裸体男粗大视频在线观看| 久久99久久亚洲国产| 亚洲经典中文字幕| 在线成人一区二区| 国产精品久久久久久久久久99| 91精品久久久久久久久久久久久久| 精品久久久久久中文字幕一区奶水| 中国日韩欧美久久久久久久久| 欧美一区二区视频97| 欧美一区深夜视频| 欧美亚洲国产另类| 1769国内精品视频在线播放| 最近2019年手机中文字幕| 中文字幕欧美精品日韩中文字幕| 日韩大陆欧美高清视频区| 91wwwcom在线观看| 国产亚洲视频中文字幕视频| 国产z一区二区三区| 久久亚洲一区二区三区四区五区高| 欧美猛少妇色xxxxx| 亚洲片在线资源|