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

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

c++中冒號(:)和雙冒號(::)的用法

2019-11-06 06:40:51
字體:
來源:轉載
供稿:網友

原文http://blog.csdn.net/zimingjushi/article/details/6549390/

1.冒號(:)用法(1)表示機構內位域的定義(即該變量占幾個bit空間)typedef struct _XXX{unsigned char a:4;unsigned char c;} ; XXX(2)構造函數后面的冒號起分割作用,是類給成員變量賦值的方法,初始化列表,更適用于成員變量的常量const型。struct _XXX{_XXX() : y(0xc0) {}};(3) public:和PRivate:后面的冒號,表示后面定義的所有成員都是公有或私有的,直到下一個"public:”或"private:”出現為止。"private:"為默認處理。(4)類名冒號后面的是用來定義類的繼承。class 派生類名 : 繼承方式 基類名{派生類的成員};繼承方式:public、private和protected,默認處理是public。2.雙冒號(::)用法(1)表示“域操作符”例:聲明了一個類A,類A里聲明了一個成員函數void f(),但沒有在類的聲明里給出f的定義,那么在類外定義f時, 就要寫成void A::f(),表示這個f()函數是類A的成員函數。(2)直接用在全局函數前,表示是全局函數 例:在VC里,你可以在調用API 函數里,在API函數名前加::(3)表示引用成員函數及變量,作用域成員運算符例:System::Math::Sqrt() 相當于System.Math.Sqrt()——————————————————————————————————————VC中如下::是C++里的“作用域分解運算符”。比如聲明了一個類A,類A里聲明了一個成員函數voidf(),但沒有在類的聲明里給出f的定義,那么在類外定義f時,就要寫成voidA::f(),表示這個f()函數是類A的成員函數。  :: 一般還有一種用法,就是直接用在全局函數前,表示是全局函數。當類的成員函數跟類外的一個全局函數同名時,考試,大提示在類內定義的時候,打此函數名默認調用的是本身的成員函數;如果要調用同名的全局函數時,就必須打上::以示區別。比如在VC里,你可以在調用API函數時,在API函數名前加::。(編輯:)

 

 

 

*********************************************************************************************

*********************************************************************************************

*********************************************************************************************

這篇文章將總結C/C++中的冒號的用法。1、位域定義這個在前面關于位結構體的文章里說得夠多的了,不再重復了。2、類構造函數(Constructor)的初始化列表先說下什么叫構造函數吧(是不是啰嗦了?C++的人應該都知道了吧,還是以防萬一一下)。所謂構造函數,就是與類同名的函數,它與普通函數的區別在于,它沒有返回類型。在構造函數后面緊跟著冒號加初始化列表,各初始化變量之間以逗號(,)隔開。下面舉個例子。class myClass{public :myClass();// 構造函數,無返回類型,可以有參數列表,這里省去~myClass();// 析構函數int a;const int b;}myClass::myClass():a(1),b(1)// 初始化列表{}上面的例子展示了冒號的這個用法,下面對這個用法進行幾點說明:1)初始化列表的作用相當于在構造函數內進行相應成員變量的賦值,但兩者是有差別的。在初始化列表中是對變量進行初始化,而在構造函數內是進行賦值操作。兩都的差別在對于像const類型數據的操作上表現得尤為明顯。我們知道,const類型的變量必須在定義時進行初始化,而不能對const型的變量進行賦值,因此const類型的成員變量只能(而且必須)在初始化列表中進行初始化,即下面的代碼將會出錯:myClass::myClass(){a = 1;// 沒錯,效果相當于在初始化列表中進行初始化b = 1;// 出錯,const變量不能進行賦值操作;}2)初始化的順序與成員變量聲名的順序相同。先看一下下面的程序:myClass::myClass():b(1),a(b){}這樣的執行結果a,b各是多少呢?b=1,a=1?不是,b=1而a是個隨機數。這一點是相當重要的哦,一般在初始化列表中進行初始化時,初始化的順序應與聲明的順序保持一致,防止出現不必要的錯誤。3)對于繼承的類來說,在初始化列表中也可以進行基類的初始化,初始化的順序是先基類初始化,然后再根據該類自己的變量的聲明順序進行初始化。3、聲明基類。假設我們重新定義一個類,繼承自myClass類。定義方式如下:class derivedClass : public myClass{// 略去}這里的冒號起到的就是聲名基類的作用,在基類類名前面可以加public/private/protected等標簽,用于標識繼承的類型,也可以省略,省略的話,用class定義的類默認為private,用struct定義的類默認為public,至于具體各個標簽有什么區別這里就不說了。與初始化列表一樣的,這里也可以聲名多個基類,各基類之間用逗號(,)隔開。4、條件語句(? :)與?構成條件語句,作用相當于if else,如下;int a,b,c;a=3;b=2;c=a>b?a:b;// 如果a>b成立,則反a賦給c,否則把b賦給c條件語句的結構為:條件表達式?表達式1:表達式2當條件表達式為true時,表達式的值為表達式1的值,否則為表達式2的值。幾點說明:1)?:可以嵌套,但不推薦使用(難懂),下面的表達式你能看懂啥意思不?int max = i>j ? i>k ? i : k : j>k ? j : k;腦袋大了吧,呵呵。2)?:具有很低的優先級,這個要注意哦,下面的程序執行結果是啥呢?int i = 3;int j = 2;cout << i>j?i:j;// 出錯,<<比>具有更高的優先級,執行順序為 ((cout<<i)>j)?i:j,相當于是比較cout<<i與j的大小,然后根據比較結果決定表達式值為i或j,這顯然要出錯的,cout<<i的值是cout,不能跟整型數j進行比較。cout << (i>j)?i:j;//輸出1或0,相當于(cout<<(i>j))作為判決條件,來決定表達式的值為i或j,而cout<<(i>j),i>j則輸出1否則0,然后再將(cout<<(i>j))作為?:的條件,如果cout正確執行則為1(true),否則為0(false),以此決定表達式值為i或jcout <<(i>j?i:j);//i>j則輸出i,否則輸出j,表達式值為true如果cout正確執行,否則為false更多的關于優先級的問題就不說了。5、語句標簽通常跟goto配合使用,如:step1: a = f1();....goto step1;這種作法也不是很推薦,原因在于它破壞了語句的順序執行,這樣的代價大家應該清楚吧。不過存在即為合理嘛,既然它還存在,肯定還是有它的用處有它的好處的,比如說,多層嵌套的退出(會比break continue直觀一點吧),也可以避免重復代碼之類之類的6、switch語句中case后。這個不說了,要是不會的話,我也沒話可說了。7、匯編指令模板這個我也不懂,不班門弄斧了,可以參考一下:http://developer.e800.com.cn/articles/2006/43/1144846933898_1.html改天學習一下。

 

 

*********************************************************************************************

*********************************************************************************************

*********************************************************************************************

1、 作用域符號::的前面一般是類名稱,后面一般是該類的成員名稱,C++為例避免不同的類有名稱相同的成員而采用作用域的方式進行區分如:A,B表示兩個類,在A,B中都有成員member。那么A::member就表示類A中的成員memberB::member就表示類B中的成員member 2、 全局作用域符號:當全局變量在局部函數中與其中某個變量重名,那么就可以用::來區分如: char zhou; //全局變量 void sleep() { char zhou; //局部變量 char(局部變量) = char(局部變量) *char(局部變量) ; ::char(全局變量) =::char(全局變量) *char(局部變量); } 3、 ::是C++里的“作用域分解運算符”。比如聲明了一個類A,類A里聲明了一個成員函數voidf(),但沒有在類的聲明里給出f的定義,那么在類外定義f時,就要寫成voidA::f(),表示這個f()函數是類A的成員函數。例如

 

[cpp] view plain copy01  class CA {    02  public:    03    int ca_var;    04    int add(int a, int b);    05    int add(int a);    06  };   07      08  //那么在實現這個函數時,必須這樣書寫:    09  int CA::add(int a, int b)    10  {    11    return a + b;    12  }    13      14  //另外,雙冒號也常常用于在類變量內部作為當前類實例的元素進行表示,比如:    15  int CA::add(int a)    16  {    17    return a + ::ca_var;    18  }   19      20  //表示當前類實例中的變量ca_var。  


上一篇:C++中的static關鍵字

下一篇:C++Primer筆記

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91精品久久久| 亚洲国产精彩中文乱码av在线播放| 久久天天躁日日躁| 国产精品综合网站| 国产精品无av码在线观看| 成人疯狂猛交xxx| 国产精品亚洲第一区| 久久久久日韩精品久久久男男| 日韩电视剧免费观看网站| 国产拍精品一二三| 在线播放日韩欧美| 欧美一级在线播放| 亚洲成人激情视频| 国产精品第3页| 中文字幕一区日韩电影| 8x拔播拔播x8国产精品| 久久视频国产精品免费视频在线| 欧美日韩一区二区三区| 中文字幕亚洲欧美日韩2019| 这里只有精品丝袜| 亚洲精品suv精品一区二区| 国产成人精品av在线| 欧美情侣性视频| 日本午夜在线亚洲.国产| 国产999精品久久久| 中文字幕亚洲情99在线| 国产一区视频在线| 国产精品高潮呻吟久久av无限| 欧美日韩国产专区| 欧美精品videossex88| 黑人极品videos精品欧美裸| 久久人人97超碰精品888| 国内精品久久久久| 91精品国产91久久久久久最新| 欧美成人高清视频| 国产精品久久av| 88国产精品欧美一区二区三区| 亚洲图片欧美午夜| 国产精品久久久久久久美男| 视频一区视频二区国产精品| 国产精品久久久久久五月尺| 国产精品亚洲片夜色在线| 欧美一性一乱一交一视频| 久久久91精品国产一区不卡| 欧美一级高清免费播放| 高跟丝袜欧美一区| 97精品伊人久久久大香线蕉| 欧美日韩国产一区二区三区| 国产精品自拍网| 亚洲精品久久久久久久久| 日韩中文字幕亚洲| 中文字幕成人在线| 欧美最猛黑人xxxx黑人猛叫黄| 日韩一中文字幕| 亚洲精品91美女久久久久久久| 91丝袜美腿美女视频网站| 亚洲欧美日韩在线高清直播| 国产盗摄xxxx视频xxx69| 97在线视频免费观看| 91久久夜色精品国产网站| 日韩在线精品视频| 黑人精品xxx一区一二区| 欧美成人精品在线播放| 欧美日韩福利视频| 亚洲欧美制服中文字幕| 亚洲日韩中文字幕| 亚洲国产精品一区二区三区| 欧美人成在线视频| 日韩a**站在线观看| 国产激情视频一区| 97国产一区二区精品久久呦| 国产成人中文字幕| 久久这里只有精品视频首页| 日韩美女写真福利在线观看| 精品亚洲一区二区三区在线观看| 久久久精品国产一区二区| 国产精品com| 色哟哟亚洲精品一区二区| 久久免费少妇高潮久久精品99| 亚洲天堂2020| 日韩精品高清在线| 日韩欧美在线播放| 国产成人jvid在线播放| 欧美老女人在线视频| 国产精品美女免费| 亚洲电影成人av99爱色| 中文字幕av一区中文字幕天堂| 久久精品这里热有精品| 日韩电影网在线| 色噜噜国产精品视频一区二区| 日韩电影大全免费观看2023年上| 亚洲福利在线视频| 亚洲国产精品va在线看黑人| 久久偷看各类女兵18女厕嘘嘘| xx视频.9999.com| 欧美肥臀大乳一区二区免费视频| 成人激情视频在线播放| 国产精品综合网站| 精品久久久久久| 成人免费自拍视频| 另类天堂视频在线观看| 人人爽久久涩噜噜噜网站| 国模视频一区二区三区| 国产在线精品成人一区二区三区| 中文字幕日韩av电影| 国产精品久久久久秋霞鲁丝| 久久69精品久久久久久国产越南| 国产精品亚洲综合天堂夜夜| 国产日韩在线免费| 亚洲色图欧美制服丝袜另类第一页| 日韩一区二区精品视频| 国产va免费精品高清在线观看| 国语自产精品视频在线看一大j8| 久久久久久久一区二区| 国产不卡精品视男人的天堂| 国产日韩欧美综合| 亚洲成人免费在线视频| 91大神福利视频在线| 成人免费视频a| 亚洲精品综合久久中文字幕| 午夜精品一区二区三区在线视频| 亚洲人成电影网站色…| 91av国产在线| 国产欧美亚洲精品| 国产一区二区动漫| 亚洲午夜国产成人av电影男同| 蜜臀久久99精品久久久久久宅男| 日韩高清免费在线| 色综合久综合久久综合久鬼88| 亚洲欧美激情精品一区二区| 亚洲系列中文字幕| 97在线视频观看| 欧美精品在线极品| 国产精品美女www爽爽爽视频| 亚洲第一页在线| 久久国产精品视频| 成人网在线免费看| 97热精品视频官网| 欧美精品精品精品精品免费| 国产午夜精品理论片a级探花| 久热精品视频在线观看一区| 久久99国产综合精品女同| 日韩欧美极品在线观看| 亚洲欧美日韩直播| 欧美激情网友自拍| 亚洲另类激情图| 91大神在线播放精品| 精品久久久免费| 欧美成人性色生活仑片| 亚洲天堂av高清| 精品亚洲永久免费精品| 亚洲性线免费观看视频成熟| 欧美视频在线免费| 5566成人精品视频免费| 国产精品成人品| 国产欧美精品va在线观看| 欧美成人免费小视频| 播播国产欧美激情| 色婷婷av一区二区三区久久| 日韩激情第一页| 精品中文视频在线| 久久天天躁狠狠躁夜夜爽蜜月| 欧美日韩国产麻豆| 国产精品91免费在线|