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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

const的常見用法

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

1.用于定義常量變量:

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

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

void fun1(const int &val){ val = 10; //出錯(cuò)}void main(){ int a = 2; fun1(a); //因?yàn)槌鲥e(cuò),這個(gè)函數(shù)結(jié)束時(shí)a的值還是2}

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

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

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

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

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

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

5.修飾指針:

const int *A; 或 int const *A; //const修飾指向的對(duì)象,A可變,A指向的對(duì)象不可變*A=10; //會(huì)報(bào)錯(cuò)int *const A; //const修飾指針A,A不可變,A指向的對(duì)象可變A=&a; //會(huì)報(bào)錯(cuò)const int *const A; //指針A和A指向的對(duì)象都不可變const int a=10;int *A=&a; //會(huì)報(bào)錯(cuò)

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

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

7.修飾類的成員變量:

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

class{ private: //這樣初始化都是錯(cuò)的: 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這個(gè)類型的(帶有static的),在類的外面初始化:

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

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

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

9.const修飾引用變量:

int b=10;const int &a=b;a=11; //會(huì)報(bào)錯(cuò)b=11; //不會(huì)報(bào)錯(cuò)
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 梁平县| 唐海县| 深水埗区| 子洲县| 日照市| 简阳市| 堆龙德庆县| 通许县| 治多县| 肇源县| 南郑县| 应用必备| 达尔| 栾城县| 颍上县| 正阳县| 京山县| 铅山县| 额济纳旗| 阳泉市| 从江县| 勃利县| 阜宁县| 双柏县| 奉节县| 博白县| 尚志市| 江口县| 丰城市| 三穗县| 天津市| 满城县| 岱山县| 民县| 淄博市| 鄂尔多斯市| 台前县| 柏乡县| 哈巴河县| 六安市| 西林县|