国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

const的常見用法

2019-11-09 19:46:12
字體:
供稿:網(wǎng)友

1.用于定義常量變量:

const int Val = 10;Val = 20; //錯誤,不可被修改

2.const作為形式參數(shù):

void fun1(const int &val){ val = 10; //出錯}void main(){ int a = 2; fun1(a); //因為出錯,這個函數(shù)結(jié)束時a的值還是2}

有人會問為什么不按值傳遞,按值傳遞還需要把這個值復制一遍,而引用不需要,使用引用是為了提高效率

3. 節(jié)約內(nèi)存空間:

#define PI 3.14 //使用#define宏const double Pi = 3.14 //使用const,這時候Pi并沒有放入內(nèi)存中double a = Pi; //這時候才為Pi分配內(nèi)存,不過后面再有這樣的定義也不會再分配內(nèi)存double b = PI; //編譯時分配內(nèi)存double c = Pi; //不會再分配內(nèi)存double d = PI; //編譯時再分配內(nèi)存

const定義的變量,系統(tǒng)只為它分配一次內(nèi)存,而使用#define定義的常量宏,能分配好多次,這樣const就很節(jié)約空間

4.類中使用const修飾函數(shù)防止修改非static類成員變量:

class{ public: void fun() const //加const修飾 { a = 10; //出錯,不可修改非static變量 b = 10; //對,可以修改 } PRivate: int a; static int b;};

5.修飾指針:

const int *A; 或 int const *A; //const修飾指向的對象,A可變,A指向的對象不可變*A=10; //會報錯int *const A; //const修飾指針A,A不可變,A指向的對象可變A=&a; //會報錯const int *const A; //指針A和A指向的對象都不可變const int a=10;int *A=&a; //會報錯

6.修飾函數(shù)返回值,防止返回值被改變:

const int fun(); //接收返回值的變量也必須加constconst int a = fun(); //接收的變量也要是const的,int a = fun()是錯誤的

7.修飾類的成員變量:

使用const修飾的變量必須初始化,在類中又不能在定義時初始化,如:

class{ private: //這樣初始化都是錯的: const int b = 10; static const int c = 10;};

初始化const int類型(沒有static),在類的構(gòu)造函數(shù)上初始化:

Class Test{ public: Test():b(23){ } //構(gòu)造函數(shù)上初始化b的值為23 private: const int b;};

初始化static const int這個類型的(帶有static的),在類的外面初始化:

class Test{ private: static const int c;}; const int Test::c=10; //類的外部初始化c為10

8.const定義的對象變量只能作用于這個程序該C/C++文件,不能被該程序的其他C/C++文件調(diào)用

如file1.cpp中,const int val;在file2.cpp中,extern intval; //錯誤,無法調(diào)用要想const定義的對象變量能被其他文件調(diào)用,定義時必須使用extern修飾為extern const int val;非const變量默認為extern,要是const能被其他文件訪問必須顯示指定為extern

9.const修飾引用變量:

int b=10;const int &a=b;a=11; //會報錯b=11; //不會報錯
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 富锦市| 黔南| 林口县| 龙江县| 都安| 白水县| 万荣县| 济阳县| 庆城县| 喀什市| 晋州市| 崇文区| 星座| 易门县| 明水县| 来安县| 抚宁县| 仁怀市| 化德县| 翁源县| 扎鲁特旗| 腾冲县| 天全县| 葫芦岛市| 色达县| 油尖旺区| 五大连池市| 马鞍山市| 桓仁| 宣汉县| 筠连县| 定南县| 齐齐哈尔市| 乌兰浩特市| 汉沽区| 潍坊市| 三门峡市| 浮山县| 安福县| 郑州市| 无锡市|