日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

const常见用法

發(fā)布時間:2024/8/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 const常见用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?const用法主要是防止定義的對象再次被修改,定義對象變量時要初始化變量

?

下面我就介紹一下幾種常見的用法

1.用于定義常量變量,這樣這個變量在后面就不可以再被修改

?const int Val = 10;

?//Val = 20; //錯誤,不可被修改

?

2. 保護傳參時參數不被修改,如果使用引用傳遞參數或按地址傳遞參數給一個函數,在這個函數里這個參數的值若被修改,

則函數外部傳進來的變量的值也發(fā)生改變,若想保護傳進來的變量不被修改,可以使用const保護

?void? fun1(const int &val)

? {

???? //val = 10; //出錯

}

void fun2(int &val)

{

?? val = 10; //沒有出錯

}

void main()

{

?? int a = 2;

?? int b = 2;

?? fun1(a); //因為出錯,這個函數結束時a的值還是2

?? fun2(b);//因為沒有出錯,函數結束時b的值為10

}

如果只想把值傳給函數,而且這個不能被修改,則可以使用const保護變量,有人會問為什么不按值傳遞,按值傳遞還需要把這個值復制一遍,

而引用不需要,使用引用是為了提高效率//如果按值傳遞的話,沒必要加const,那樣根本沒意義

?

3. 節(jié)約內存空間,

?#define? PI? 3.14?//使用#define宏

?const double Pi = 3.14 //使用const,這時候Pi并沒有放入內存中

?

?double? a = Pi;? //這時候才為Pi分配內存,不過后面再有這樣的定義也不會再分配內存

?double? b = PI;? //編譯時分配內存

?double? c = Pi;? //不會再分配內存,

?double? d = PI;? //編譯時再分配內存

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

?

4.類中使用const修飾函數防止修改非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指向的對象不可變
int *const A;  ??????????? ?//const修飾指針A, A不可變,A指向的對象可變?
const int *const A;????????? ?//指針A和A指向的對象都不可變

?

?

6.修飾函數返回值,防止返回值被改變

? const int fun();

? 接收返回值的變量也必須加const

? const int a = fun(); //接收的變量也要是const的,int a = fun()是錯誤的

?

7.修飾類的成員變量

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

如;

class

{

private:

??int a = 10;

??const int b = 10;

??static const int c = 10;

//這樣初始化都是錯的,

}

?

初始化const int類型(沒有static),在類的構造函數上初始化

Class Test

{

Public:

??Test():b(23) //構造函數上初始化b的值為23

?? {

}

private:

?????const int b ;

}

?

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

class Test

{

private:

??static const int c;

}?

const int Test::c=10; //類的外部初始化c為10

?

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

?如file1.cpp中 const int val;

?在file2.cpp中, extern intval; //錯誤,無法調用,

要想const定義的對象變量能被其他文件調用,定義時必須使用extern修飾為

extern const int val;

?

非const變量默認為extern,要是const能被其他文件訪問必須顯示指定為extern

?

總結

以上是生活随笔為你收集整理的const常见用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。