国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C++聲明語(yǔ)法方法解讀

開(kāi)發(fā) 后端
C++聲明語(yǔ)法在實(shí)際編程中是一個(gè)比較重要的應(yīng)用技術(shù)。我們?cè)谶@篇文章中將會(huì)為大家詳細(xì)介紹一下這方面的知識(shí),希望能給大家?guī)?lái)一些幫助。

C++編程語(yǔ)言中,有很多功能的實(shí)現(xiàn)方法與其他語(yǔ)言有很多不同之處,尤其是和C語(yǔ)言相比,它的應(yīng)用方法更加靈活,方便。在這里我們就為大家詳細(xì)介紹了有關(guān)C++聲明語(yǔ)法的相關(guān)方法。

一個(gè)聲明為每個(gè)聲明子都聲明一個(gè)實(shí)體(entity),同時(shí)為那個(gè)實(shí)體給出一個(gè)名字,并且隱含的給出存儲(chǔ)類(lèi),類(lèi)型,和由說(shuō)明符給出的其它特性。說(shuō)明符和聲明子一起決定了名字是否是一個(gè)對(duì)象,數(shù)組,指針,引用或函數(shù)。例如,

聲明x為一個(gè)整型指針,f為一個(gè)函數(shù)返回一個(gè)整型。正是聲明子*x和f()使類(lèi)型x和f產(chǎn)生區(qū)別。

 

  1. int *x, f();  
  2. declarator: [ * [ const ] | & ]... direct-declarator  
  3. direct-declarator: declarator-id | ( declarator ) |  
  4. direct-declarator ( parameter-declaration-list ) |   
  5. direct-declarator [ constant-expression ]  
  6. A declarator-id is an identifier, possibly qualified:  
  7. declarator-id: [ nested-name-specifier ] identifier  
  8. nested-name-specifier: { class-or-namespace-name ::}... 

 

如果聲明子是一個(gè)僅包含一個(gè)declarator-id的直接-聲明子,那么這說(shuō)明這個(gè)標(biāo)識(shí)符具有decl-specifiers隱含的屬性,而沒(méi)有進(jìn)一步的修飾。例如,在下面的C++聲明語(yǔ)法中

int n;

聲明子是n,這是一個(gè)只包含direct-declarator的declarator-id,因此根據(jù)含義,n的類(lèi)型為整型。

如果聲明子為其它形式,那么你可以按照下面的方法確定標(biāo)識(shí)符的類(lèi)型:首先,假設(shè)T為decl-specifiers隱含的類(lèi)型,忽略friend或static等非類(lèi)型屬性,同時(shí)假設(shè)D為聲明子。然后重復(fù)下面的步驟直到推導(dǎo)出D為一個(gè)declarator-id,此時(shí)T正是你所尋找的類(lèi)型:#t#

1. 如果D形如(D1),那么用D1替換D。

2. 如果D形如* D1 或 * const D1,那么根據(jù)是否有const,用“指針,它指向T”或者“常量指針,它指向T”替換T,然后用D1替換D。

3. 如果D形如D1(參數(shù)-聲明-列表),那么用參數(shù)由參數(shù)-聲明-列表定義的、“返回T的函數(shù)”替換T,然后用D1替換D。

4. 如果D形如D1[常量-表達(dá)式],那么用元素個(gè)數(shù)由常量-表達(dá)式給出的“T數(shù)組”替換T,然后然后用D1替換D。

5. ***,如果聲明子形如&D,那么用“T引用”替換T,然后用D1替換D。

作為一個(gè)示例,考慮下面的C++聲明語(yǔ)法

int *f();

首先,T和D分別為int和*f(),因此D形如*D1,其中D1為f()。

你可能認(rèn)為D可以形如D1() 或者 *D1。然而,如果D形如D1(),那么D1將不得不為*f,D1將是一個(gè)direct-declarator(因?yàn)楸竟?jié)開(kāi)始處的語(yǔ)法注1規(guī)定只有direct-declarator前面是())。但是如果我們看看direct-declarator的定義注2,很明顯它不能包含*。因此,D只能是*f(),它形如*D1,其中D為f()。

既然我們已經(jīng)確定D1為f(),那么我們知道必須用“指針,它指向T”替換T,即“指針,指向整型”,同時(shí)用f()替換D。

至此我們還沒(méi)有解析D為declarator-id,因此我們必須重復(fù)該過(guò)程。此時(shí),D1只能是f,因此我們用“返回T的函數(shù)”替換T,它是一個(gè)“返回整型指針不帶參數(shù)的函數(shù)”,然后用f替換D。

此時(shí),D為declarator-id,因此推導(dǎo)結(jié)束。我們已經(jīng)確定聲明

int *f();

聲明f的類(lèi)型為“不帶參數(shù)返回整型指針的函數(shù)”。另一個(gè)例子,聲明

int* p, q;

具有兩個(gè)聲明子,*p和q。對(duì)于每個(gè)聲明子,T都是int。對(duì)于***個(gè)聲明子,D是*p,因此T變成“指針,它指向整型,”而D為p。聲明p類(lèi)型為“指針,它指向整型”。

我們單獨(dú)分析第二個(gè)聲明子,T還是int,D是q。很明顯聲明q為整型。

***,讓我們分析§10.1.2/173中那個(gè)奇怪的例子:

double (*get_analysis_ptr())(const vector<Student_info>&);

分析C++聲明語(yǔ)法過(guò)程可以分為下面五個(gè)步驟

1. T: double D: (*get_analysis_ptr())(const vector<Student_info>&)

2. T: 返回double帶有 const vector<Student_info>& 參數(shù)的函數(shù) D: (*get_analysis_ptr())

3. T: function returning double... (如前所示) D: *get_analysis_ptr()

4. T: 指針,它指向一個(gè)返回double...的函數(shù) D: get_analysis_ptr()

5. T: 一個(gè)函數(shù),返回一個(gè)函數(shù)指針,它指向一個(gè)返回double...的函數(shù) D: get_analysis_ptr

get_analysis_ptr是一個(gè)函數(shù),它返回一個(gè)函數(shù)指針,它指向一個(gè)返回double,帶有const vector<Student_info>&參數(shù)的函數(shù)。我們將如何展開(kāi)const vector<Student_info>&作為一個(gè)練習(xí)。幸運(yùn)的是,C++聲明語(yǔ)法如此令人迷惑;它們中的大多數(shù)看起來(lái)

declarator: declarator-id ( parameter-declaration-list )

到目前為止,常見(jiàn)情況中最難的是返回函數(shù)指針的函數(shù)。

責(zé)任編輯:曹凱 來(lái)源: 博客園
相關(guān)推薦

2010-01-21 14:07:14

CC++聲明

2010-01-21 09:34:57

C++語(yǔ)法

2010-01-25 11:21:01

C++語(yǔ)法

2010-02-05 16:46:58

C++ TinyXml

2010-02-01 11:22:09

C++虛函數(shù)

2011-03-31 09:30:07

CC++聲明

2010-02-02 16:15:38

C++變量聲明

2010-02-04 09:33:08

C++指針重載

2010-01-28 14:04:35

C++鏈表

2010-02-03 15:58:51

C++ timer

2010-02-06 16:59:19

C++ kmp算法模板

2010-01-12 16:12:47

C++單元測(cè)試

2010-02-05 14:12:46

C++聲明放置

2024-01-23 10:48:44

C++函數(shù)重載開(kāi)發(fā)

2011-08-17 11:15:22

Objective-C語(yǔ)法

2010-02-06 09:46:46

C++單向鏈表

2010-01-21 09:11:38

C++編譯器

2010-02-02 17:39:31

C++構(gòu)造函數(shù)

2010-02-04 16:07:39

C++回調(diào)函數(shù)

2010-02-05 17:58:32

C++鏈棧模板
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

在线观看免费成人av| 精品国产乱码久久久久久久| 国产欧美一区二区在线播放| 妞干网免费视频| 国产真实有声精品录音| 亚洲另类一区二区| 国产成人短视频| 日本高清成人vr专区| 99综合电影在线视频| 国产亚洲福利一区| 日日摸天天爽天天爽视频| 青青草97国产精品麻豆| 91黄色8090| 91福利在线免费| 亚洲色图19p| 成人在线激情网| 免费在线看成人av| 成人黄色网免费| 四虎精品在线| 一区二区三区加勒比av| 天天爱天天操天天干| 国产精品每日更新| 国产色a在线观看| 国产精品素人一区二区| 欧美亚洲另类色图| 国产清纯白嫩初高生在线观看91| 欧美成人福利在线观看| 欧美激情一区| 91精品国产综合久久久久久久久| 久久免费视频1| 国产二级片在线| 亚洲一区二区中文在线| 99草草国产熟女视频在线| eeuss国产一区二区三区 | 黄色在线网站噜噜噜| 亚洲国产中文字幕久久网| 欧美日本三级| 国产精品网址在线| 天天综合精品| 免费日韩在线观看| 午夜在线精品偷拍| 中文字幕日韩精品一区二区| 亚洲欧美日韩小说| 国产欧美亚洲日本| 美腿丝袜亚洲一区| 伊人发布在线| 久久久极品av| 国产一区日韩一区| 日韩精品一区二区三区久久| 天天爽夜夜爽夜夜爽精品视频| 日韩伦理一区二区| 国产女人精品视频| 精品综合久久88少妇激情| 国产精品一区二区三区精品| 成人国产精品免费| 18在线观看的| 国产精品丝袜一区二区三区| 国产一区二区三区免费播放 | 中文字幕一区二区三区在线观看| 精品国产99久久久久久| 97在线观看视频国产| 成人视屏免费看| 日本乱理伦在线| 91亚色免费| 狠狠躁18三区二区一区| 99精品国产高清一区二区麻豆| 日韩成人在线资源| 国产精品视频一区二区久久| 欧美va亚洲va| 99麻豆久久久国产精品免费 | 日韩中文在线播放| 亚洲3atv精品一区二区三区| 中文字幕av网| 亚洲丝袜啪啪| 成人网址在线观看| 久久精品天堂| 日本黄大片一区二区三区| 国产农村妇女毛片精品久久麻豆| 麻豆电影传媒二区| 97精品在线视频| 国产精品一区在线观看你懂的| 成人免费网站观看| 国产精品一区二区在线观看| 精品国产999| 精品动漫3d一区二区三区免费| 久久白虎精品| 狠狠干一区二区| 欧美一区二区三区人| 在线国产一区二区| 日本韩国欧美在线观看| 亚洲丁香婷深爱综合| 成人黄色网址在线观看| 亚洲人成在线观看| 国产精品流白浆在线观看| 中文字幕在线导航| 亚洲成人xxx| 久久只精品国产| 精品三级av在线导航| 3d黄动漫网站| 日本高清不卡三区| 精品久久久久久最新网址| 久久亚洲春色中文字幕久久久| 成人在线免费| 伊人网在线视频| 中文字幕一区二区三区有限公司| 国产一区二区三区18| 久久精品99国产精品| 一区二区电影免费观看| 茄子视频成人在线观看| 最近2019中文字幕在线高清| 亚洲人一二三区| 久久天天久久| 免费成年网站| 欧美大片在线看| 9191国产精品| 久久精品欧美日韩| 疯狂欧洲av久久成人av电影| 黄上黄在线观看| 丰满少妇被猛烈进入高清播放| 91夜夜未满十八勿入爽爽影院| 久久夜色精品亚洲噜噜国产mv| 日韩视频一区二区三区在线播放 | 欧美国产日韩中文字幕在线| 亚洲高清在线观看| 日本道在线观看一区二区| 国产一区亚洲一区| 精品动漫av| 丁香婷婷成人| 99久久999| 精品国产一区二区三区2021| 自拍偷拍欧美视频| 91ph在线| 新版的欧美在线视频| 精品福利视频导航大全| 亚洲最大福利视频| 国产精品免费在线播放| 亚洲成人久久一区| 亚洲视频自拍偷拍| 孩xxxx性bbbb欧美| 91精品视频在线| 日本婷婷久久久久久久久一区二区| 亚洲国产高清国产精品| 欧美成人黑人猛交| 国产二区三区四区| 超碰在线caoporen| av成人在线网站| 影音先锋成人在线电影| 六月丁香综合在线视频| 中文字幕 久热精品 视频在线| 91福利社在线观看| 中文字幕亚洲综合| 国产亚洲精品精华液| 91福利视频网站| 久久99热这里只有精品国产| 国产一区二区三区四区hd| 日本韩国欧美在线观看| 黄网在线观看| 免费萌白酱国产一区二区三区| 免费日韩视频| 亚洲一区二区三区四区不卡| 国产视频精品一区二区三区| 成人综合国产精品| 日韩手机在线观看视频| 欧美69xxx| 日韩精品水蜜桃| 最新国产成人在线观看| 欧美日本啪啪无遮挡网站| 亚洲精品一区二区毛豆| freemovies性欧美| 久久婷婷蜜乳一本欲蜜臀| 91老司机福利 在线| 91精品国产丝袜白色高跟鞋| 国产精品久久久久不卡| 欧美亚洲一二三区| 伊人网在线播放| 国产精品1区2区| 91精品国产aⅴ一区二区| 奇米四色中文综合久久| 香蕉视频禁止18| 欧美日日夜夜| 亚洲精品国久久99热| 97人人模人人爽人人喊中文字| 黄色成人在线看| 在线天堂中文资源最新版| 久久99热国产| 日韩av在线免播放器| 精品亚洲一区二区三区四区五区高| 日本在线аv| 伊人成综合网yiren22| 国产婷婷色一区二区三区| 色多多国产成人永久免费网站| 大陆极品少妇内射aaaaa| 四虎国产精品永久在线国在线| 亚洲男人的天堂av| 午夜精品区一区二区三| 一级欧美视频| 欧美中文字幕不卡| 国产一区再线| 黄色成人免费网| 最近日韩中文字幕|