const的常見用法

2021-05-27 13:30:27 字數 1866 閱讀 1040

出處;

const用法主要是防止定義的物件再次被修改,定義物件變數時要初始化變數

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

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

const int val = 10;

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

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

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

void  fun1(const int &val)

void fun2(int &val)

void main()

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

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

3. 節約記憶體空間,

#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定義的變數,系統只為它分配一次記憶體,而使用#define定義的常量巨集,能分配好多次,這樣const就很節約空間

4.類中使用const修飾函式防止修改非static類成員變數

class

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

初始化const int型別(沒有static),在類的建構函式上初始化

class test

private:

const int b ; }

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

class test

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的常見用法

const用法主要是防止定義的物件再次被修改,定義物件變數時要初始化變數 下面我就介紹一下幾種常見的用法 1.用於定義常量變數,這樣這個變數在後面就不可以再被修改 const int val 10 val 20 錯誤,不可被修改 2.保護傳參時引數不被修改,如果使用引用傳遞引數或按位址傳遞引數給乙個...

const的常見用法

const用法主要是防止定義的物件再次被修改,定義物件變數時要初始化變數 下面我就介紹一下幾種常見的用法 1.用於定義常量變數,這樣這個變數在後面就不可以再被修改 const int val 10 val 20 錯誤,不可被修改 2.保護傳參時引數不被修改,如果使用引用傳遞引數或按位址傳遞引數給乙個...

const的常見用法

表示該變數是乙個常量,不可以進行改變 這時要考慮和const的位置,在前表示這是乙個指標常量,指標指向的物件不可變 在後,表示這是乙個常量指標,不可以通過解引用的方式修改物件的值。常量指標,指向常量的指標 const datatype pointer 不能通過指標修改指標指向的物件的值,但是可以改變...