1. 程式人生 > >C++:const限定符基本解析

C++:const限定符基本解析

相對於#define,C++有一種更好的方法來處理符號常量,就是使用const限定符來修改一個變數的宣告和初始化

例如:

const int sum = 100;那麼我們就可以在程式中使用sum,而不是100了,常量(如:sum)在初始化以後其值就固定了下來,編譯器就不允許再修改其值。因為const限定了宣告的定義。

建立常量的通用格式:

const type name = value;

注意:如果要使用const,就要在宣告的時候對其進行初始化,下面的程式碼是wrong的:

const int sum;
sum  = 100;

要記住的是:

這種方式是錯誤的。如果在宣告常量時沒有提供值,則該常量的值是不確定的,而且無法修改。

const相對於#define來說:

const是有好處的.

1.它能夠明確指定型別.

2,可以使用C++的作用域規則將定義限制在特定的函式或者檔案中。

3.可以將cont用於比較複雜的型別。

先學習C++之後要使用const來定義符號常量,而不是#define

一:預設狀態下const只在本檔案內有效。

例如:const int size = 100;

編譯器在編譯過程中將用到該變數的地方都替換為對應的值,就是說編譯器會找掃程式碼中所有用到的size,然後替換為100;

這種規定是因為:

為了執行上述的替換編譯器必須知道變數的初始值,如果程式包含多個檔案則每個用了const物件的檔案都必須能訪問到它的初始值才行,要做到這點,,就必須在每一個用到變數的檔案中都有對它的定義,為了支援這一用法,同時也為了避免重複的定義,預設情況下const物件被設定為本檔案內有效,當多個檔案出現了同名的const變數時,等同於在不同檔案中分別定義了獨立 的變數,如果要實現多檔案公用,解決辦法:在定義前加extern;

本檔案

: extern const int size = 100;

其他檔案:

extern const int size;

相關推薦

C++:const限定基本解析

相對於#define,C++有一種更好的方法來處理符號常量,就是使用const限定符來修改一個變數的宣告和初始化 例如: const int sum = 100;那麼我們就可以在程式中使用sum,而不是100了,常量(如:sum)在初始化以後其值就固定了下來,編譯器就不允許

C++ const限定

情況 value 一次 返回值 常量指針 pop 一個 exp 得到 const限定符:利用const對對象加以限定。使得const對象一旦創建後其值就不能再改變。 const對象在定義時就必須對其進行初始化,有兩種方式: const int x = 10; co

[C++] const 限定

col t對象 bsp 運行時 lock ons 特征 block 編譯 因為const對象一旦創建後其值就不能再改變,因此const對象必須初始化。 const int i = foo();  // 運行時初始化 const int j = 1;    // 編譯時初

[C/C++]const限定總結

const限定符 const是一種限定符,被const所限定的變數其值不可以被改變。 const的初始化 由於const一旦建立其值就不能夠被改變,所以我們必須對其進行初始化 const int a;//錯誤,const變數必須進行初始化! const int b=10;//正確,編譯時初始化 const i

C++中的常量(一) const限定

無法 簡單的 對象 可能 函數重載 struct 理解 變量 必須 最近在重新看<<C++ Primer>>,第一遍的時候const和constexpr看得並不太懂,這次又有了些更新的理解,當然可能仍然有許多不對的地方... 首先,const限定符即

const限定、constexpr和常量表達式------c++ primer

rim 同文件 其他 而不是 將在 ron 必須 常量 限制   編譯器將在編譯過程中把用到const變量的地方都替換成對應的值,為了執行這種替換,編譯器必須知道變量的初始值。如果程序包含多個文件,則那個用了const對象的文件都必須能訪問到它的初始值才行。要做到這一點,就

C++中的const限定(5)——const形參和實參

1、當形參有頂層const時,傳給它常量物件或非常量物件都是可以的,這一點複合之前所說的,因為形參的初始值是拷貝了實參的。 2、在定義過載函式時,需要注意:對於形參是否是const的,是無法被編譯器所區分的。 void foo(int i){} void foo(co

c++ primer》第二章 const限定

1.const物件的初始化:有時我們希望定義這樣一種變數,它的值不能夠被改變。此時我們可以用const限定符。由於const物件一旦建立之後值不能夠再改變,因此const物件必須初始化。如果用一個物件去初始化另一個物件,那麼它們是不是const都無所謂。 2.預設狀態下,c

C++ 中的 const 限定

 const 限定符 const int bufferSize = 1024; const int k; // ERROR! const 物件必須初始化, 且一旦建立後其值不能改變,因此只能在 const 物件上執行不改變其內容的操作。 預設情況下,const

C++ 筆記:引用、指標和 const 限定

引用 引用必須初始化,也就是說,引用從“出生”開始就必須繫結至另一個物件,且必須“從一而終” 引用必須繫結至物件,而不能繫結至字面值或表示式計算結果 引用的型別要和其繫結的物件嚴格匹配,但有兩個例外情

C/C++ : 型別限定const

一、const介紹 關鍵字const是C/C++中的型別限定符(qualified type),以const關鍵字宣告的物件,其值不能通過賦值或遞增、遞減來修改,但可以初始化const變數。 二、用法說明 先來看一個簡單的例子: #include <stdio.

2.4:const限定

容易 常量 變量 常量表達式 指針 編譯器 是不是 都得 訪問 這是個好東西,Effective C++裏都已說過:能用的地方盡量用,大師都這樣說了,我們這些渣渣為何不遵循? const就是常量,這就有個重要的東西了:常量必須初始化   const int a = 0;  

const限定

操作 out 區別 const 輸出 引用 改變 底層 般的 const能對變量加以限定,使其值不可修改。如: const int inf = 0x3f3f3f3f; 任何試圖修改變量inf的值的操作都將引起編譯錯誤。 因為 const 對象一旦創建後就不能修改,所以con

2.6 const限定與引用、指針

bsp ext font 初始化 完全 一起 指針 屬於 十分 //看上去十分純潔無害的小東西,一和指針引用結合在一起就開始禍害人間 const類型:1.必須初始化;2.值不能變。 extern const:想讓某類const對象只在一個文件裏被定義,並在多個其他文件中

const限定用法整理

(1)const的來由    定義一種變數,我們希望防止程式不小心改變變數的值。因此產生了const限定符。 (2)初始化    由於const物件一旦建立就不可以改變,所以const物件必須進行初始化;    只能在c

c++ const修飾用法整理

1、什麼是const? 常型別是指使用型別修飾符const說明的型別,常型別的變數或物件的值是不能被更新的。(當然,我們可以偷樑換柱進行更新:) 修改常量:加mutable mutable class A { public: A(int i=0):test(i) { }

C#訪問修飾許可權解析以及預設許可權

C#的訪問修飾符只有四個,可以組合,常容易搞混淆,做個表方便看。部分內容轉自C#說明文件。 訪問修飾符是關鍵字,用於指定成員或型別已宣告的可訪問性。 public protected internal private 可使用訪問修飾符指定以下六個可訪問性級別:

const 型別限定——研讀C/C++標準

const 型別限定符 C 型別系統中每一個獨立的型別在都有數個該型別的限定版本,對應 const 、 volatile及對於指向物件指標的 restrict 限定符中的一個、兩個或全部三個。此頁面描述 const 限定符的效果。 編譯器可以把宣告帶 const 限定型別的物件放到只

C++ 成員函數前和函數後加const修飾區別

試圖 第一個 tpc 編譯 即使 一段 tab 限制 解決 博客轉載自: https://www.iteblog.com/archives/214.html 分析以下一段程序,闡述成員函數後綴const 和 成員函數前const 的作用 #include<iostr

C++語言學習(五)——C++語言中的CV限定錯誤

val ber char 返回 names main code 3.1 類的靜態成員 C++語言學習(五)——C++語言中的CV限定符錯誤 ?一、CV限定符錯誤簡介 1、CV限定符簡介 CV限定符即cv-qualifier,C++語言中指const和volatile限定符。