C C 中const用法小結

2021-04-19 17:12:40 字數 2929 閱讀 6146

rel="file-list" href="file:///c:%5cdocume%7e1%5cadmini%7e1.chi%5clocals%7e1%5ctemp%5cmsohtml1%5c13%5cclip_filelist.xml">rel="file-list" href="file:///c:%5cdocume%7e1%5cadmini%7e1.chi%5clocals%7e1%5ctemp%5cmsohtml1%5c14%5cclip_filelist.xml">(1

)可以定義

const

常量例如:

const int max=100;

int array[max];        (2

)便於進行型別檢查

例如:void f(const int i)

編譯器就會知道

i是乙個常量,不允許修改;(3

)可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。

還是上面的例子,如果在函式體內修改了

i,編譯器就會報錯;

例如:void f(const int i)

(4)

為函式過載提供了乙個參考。

class a

file://

乙個函式

void f(int i) const file://

上乙個函式的過載

......

};(5)

可以節省空間,避免不必要的記憶體分配。

例如:#define pi 3.14159         file://

常量巨集const doulbe  pi=3.14159;  file://

此時並未將

pi放入

rom中

......

double i=pi;               file://

此時為pi

分配記憶體,以後不再分配!

double i=pi;               file://

編譯期間進行巨集替換,分配記憶體

double j=pi;               file://

沒有記憶體分配

double j=pi;               file://

再進行巨集替換,又一次分配記憶體!

const

定義常量從彙編的角度來看,只是給出了對應的記憶體位址,而不是象

#define

一樣給出的是立即數,所以,

const

定義的常量在程式執行過程中只有乙份拷貝,而

#define

定義的常量在記憶體中有若干個拷貝。(6

)提高了效率。

編譯器通常不為普通

const

常量分配儲存空間,而是將它們儲存在符號表中,這使得它成為乙個編譯期間的常量,沒有了儲存與讀記憶體的操作,使得它的效率也很高。 使用

const

a、修飾一般常量

,常陣列,常物件

修飾符const

可以用在型別說明符前,也可以用在型別說明符後。

例如:int const x=2;

或  const int x=2;

int const a[5]=;   

或const int a[5]=;

class a;

const a a; 

或a const a;

b、修飾指標

const int *a;   

或int const *a; //const

修飾指向的物件,

a可變,

a指向的物件不可變

int *const a;

//const

修飾指標a,

a不可變,a指

向的物件可變

const int *const a;      //指標a

和a指向的物件都不可變 c

、修飾引用

const double & v;     

該引用所引用的物件不能被更新

(引用占用記憶體,記憶體中存放的是被引用物件的位址;)

d、修飾函式的返回值:

const

修飾符也可以修飾函式的返回值,是返回值不可被改變,格式

如下:const int fun1();

const myclass fun2();

(7)修飾類的成員函式:

const

修飾符也可以修飾類的成員函式,格式如下:

class c

int fun() const;//

類中的成員變數均為

const

型別.....

public:

int i;}

;這樣,在呼叫函式

fun時就不能修改類裡面的資料,如

int fun() const

再如:

int &fun() const

(8)修飾乙個返回引用的成員函式: 如:

int &fun()

在main()

c c(5);

c.fun() = 100;//

對此函式賦值;

但如果

const int &fun()

c.fun() = 100;//

試圖對此函式賦值,就會出錯,因為返回是個

const的//

引用了; 當然

const int &fun() const

(9)類成員資料的初始化

class c

~c(){}

public:

static const int m_nage = 10;//在vc

中不允許,在

vs2005

//中可以,值得關注這本身就是在

c++語法中是允許的(詳見

//c++primer)}

C C 中const用法小結

常型別是指使用型別修飾符const說明的型別,常型別的變數或物件的值是不能被更新的。因此,定義或說明常型別時必須進行初始化。概述 1.const有什麼用途?在 c程式中,const的用法主要有 定義常量 修飾函式引數 修飾函式返回值 等3個用處。在c 程式中,它還可以 修飾函式的定義體,定義類中某個...

轉貼 Const用法小結 C C

轉貼自const 用法小結 1.const常量,如const int max 100 優點 const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤 邊際效應 2.const 修飾類的資料成...

c c 中const用法總結

const型別定義 指明變數或物件的值是不能被更新,引入目的是為了取代預編譯指令 常量必須被初始化 cons的作用 1 可以定義const常量 例如 const int max 100 int array max 2 便於進行型別檢查 例如 void f const int i 編譯器就會知道i是乙...