樱花视频在线观看-西西人体大胆4444ww张筱雨-久久网免费视频-国产99页-91高清视频在线-日日干夜夜干-91社区视频-中文高清av-久久成人国产-亚洲日韩欧洲乱码av夜夜摸-97人人射-亚洲视频观看-理论片亚洲-亚洲精品99999-免费能看的黄色片-精人妻无码一区二区三区-奇米影视播放器

游戲產(chǎn)業(yè)研究網(wǎng)

C++中const的用法詳解

常類型是指使用類型修飾符const說明的類型,常類型的變量或?qū)ο蟮闹凳遣荒鼙桓碌摹R虼?,定義或說明常類型時必須進(jìn)行初始化。 一般常量和對象常量 1. 一般常量 一般常量是指簡單類型的常量。這種常量在定義時,修飾符const可以用在類型說明符前,也可以用在類型說明符后。如: int const x=2; 或 const int x=2; 定義或說明一個常數(shù)組可采用如下格式: <類型說明符> const <數(shù)組名>[<大小>]… 或者 const <類型說明符> <數(shù)組名>[<大小>]… 例如: int const a[5]={1, 2, 3, 4, 5}; 2. 常對象 常對象是指對象常量,,的rTmag教~無_;定義格式如下: <類名> const <對象名> 或者 const <類名> <對象名> 定義常對象時,同樣要進(jìn)行初始化,并且該對象不能再被更新,修飾符const可以放在類名后面,也可以放在類名前面。 常指針和常引用 1. 常指針 使用const修飾指針時,由于const的位置不同,而含意不同。下面舉兩個例子,說明它們的區(qū)別。 下面定義的一個指向字符串的常量指針: char * const prt1 = stringprt1; 其中,ptr1是一個常量指針。因此,下面賦值是非法的。 ptr1 = stringprt2; 而下面的賦值是合法的: *ptr1 = m; 因為指針ptr1所指向的變量是可以更新的,不可更新的是常量指針ptr1所指的方向(別的字符串)。 下面定義了一個指向字符串常量的指針: const * ptr2 = stringprt1; 其中,ptr2是一個指向字符串常量的指針。ptr2所指向的字符串不能更新的, K提教{網(wǎng)i^管H6L絡(luò)v^ 而ptr2是可以更新的。因此, *ptr2 = x; 是非法的,而: ptr2 = stringptr2; 是合法的。 所以,在使用const修飾指針時,L網(wǎng)VMXN$[m}應(yīng)該注意const的位置。定義一個指向字符串的指針常量和定義一個指向字符串常量的指針時,const修飾符的位置不同,前者const放在*和指針名之間,后者const放在類型說明符前。 2. 常引用 使用const修飾符也可以說明引用,被說明的引用為常引用,該引用所引用的對象不能被更新。其定義格式如下: const <類型說明符> & <引用名> 例如: const double & v; 在實際應(yīng)用中,f網(wǎng)|B\xc{Lf&pHhA育常指針和常引用往往用來作函數(shù)的形參,這樣的參數(shù)稱為常參數(shù)。 在C++面向?qū)ο蟮某绦蛟O(shè)計中,指針和引用使用得較多,其中使用const修飾的常指針和常引用用得更多。使用常參數(shù)則表明該函數(shù)不會更新某個參數(shù)所指向或所引用的對象,這樣,在參數(shù)傳遞過程中就不需要執(zhí)行拷貝初始化構(gòu)造函數(shù),這將會改善程序的運(yùn)行效率。 下面舉一例子說明常指針作函數(shù)參數(shù)的作法。 #include const int N = 6; void print(const int *p, int n); void main() { int array[N]; for (int i=0; i cin>>array[i]; print(array, N); } void print(const int *p, int n) { cout<<{<<*p; for (int i=1; i cout<<,<<*(p+i); cout<<}< } 常成員函數(shù) 使用const關(guān)鍵字進(jìn)行說明的成員函數(shù),稱為常成員函數(shù)。只有常成員函數(shù)才有資格操作常量或常對象,沒有使用const關(guān)鍵字說明的成員函數(shù)不能用來操作常對象。常成員函數(shù)說明格式如下: <類型說明符> <函數(shù)名> (<參數(shù)表>) const; 其中,const是加在函數(shù)說明后面的類型修飾符,它是函數(shù)類型的一個組成部分,因此,在函數(shù)實現(xiàn)部分也要帶const關(guān)鍵字。下面舉一例子說明常成員函數(shù)的特征。 #include class R { public: R(int r1, int r2) { R1=r1; R2=r2; } void print(); void print() const; private: int R1, R2; }; void R::print() { cout< } void R::print() const { cout< } void main() { R a(5, 4); a.print(); const R b(20, 52); b.print(); } 該例子的輸出結(jié)果為: 5,4 20;52 該程序的類聲明了兩個成員函數(shù),|T?v;T專tj%專I o;(6!gG2]教bzz專 其類型是不同的(其實就是重載成員函數(shù))。有帶const修飾符的成員函數(shù)處理const常量,這也體現(xiàn)出函數(shù)重載的特點。 常數(shù)據(jù)成員 類型修飾符const不僅可以說明成員函數(shù),也可以說明數(shù)據(jù)成員。 由于const類型對象必須被初始化,并且不能更新,因此,在類中說明了const數(shù)據(jù)成員時,只能通過成員初始化列表的方式來生成構(gòu)造函數(shù)對數(shù)據(jù)成員初始化。 下面通過一個例子講述使用成員初始化列表來生成構(gòu)造函數(shù)。 #include class A { public: A(int i); void print(); const int &r; private: const int a; static const int b; }; const int A::b=10; A::A(int i):a(i), r(a) { } void A::print() { cout< } void main() { A a1(100), a2(0); a1.print(); a2.print(); } 該程序的運(yùn)行結(jié)果為: 100:10:100 0:10:0 在該程序中,說明了如下三個常類型數(shù)據(jù)成員: const int & r; const int a; static const int b; 其中,r是常int型引用,a是常int型變量,b是靜態(tài)常int型變量。 程序中對靜態(tài)數(shù)據(jù)成員b進(jìn)行初始化。 值得注意的是構(gòu)造函數(shù)的格式如下所示: A(int i):a(i),r(a) { } 其中,冒號后邊是一個數(shù)據(jù)成員初始化列表,它包含兩個初始化項,用逗號進(jìn)行了分隔,因為數(shù)據(jù)成員a和r都是常類型的,需要采用初始化格式。

东兰县| 阜平县| 长寿区| 沙雅县| 泰来县| 九江市| 武隆县| 凤阳县| 杂多县| 新蔡县| 句容市| 仁寿县| 商都县| 巫山县| 锦屏县| 教育| 波密县| 革吉县| 广德县| 宜城市| 桃园市| 疏勒县| 阿鲁科尔沁旗| 文登市| 铜鼓县| 乡宁县| 澳门| 湘潭市| 陇南市| 社旗县| 文山县| 龙里县| 滨海县| 诸暨市| 仁怀市| 临邑县| 井冈山市| 康保县| 临夏市| 新化县| 通化县|