c++程式設計思想學習筆記-常量
一、全域性範圍的const使用
1、const的使用有兩種效果,一是生成編譯期常量,二是執行期常量。
做為編譯期常量主要用作值替代,即取代c中的#define常量定義,一般用於設定陣列大小。
此時不分配儲存空間,只在有extern限定或取位址時才會分配空間。
做為執行期常量主要控制程式的安全性,它們會被分配空間,但一經初始化就不能再改變,
陣列,結構等集合始終是執行期常量,不能當做編譯期常量使用,例如不能用於設定陣列大小。
另外c中的const只是執行期常量。
2、const對指標的使用
指向const的指標 const int* x,int const* x;
const指標 int* const x;
注意:關於賦值,不能把const指標(引用)賦給非const指標(引用)(會通過非const指標改
變const指標指向的值!),但可以把非const指標(引用)賦給const指標(引用)。這是基於
安全的考慮。
3、const用於函式引數與返回值
引數做為const值一般作為函式中的乙個初始值;但一般如下使用更易理解:
void f(int ic)
引數做為const指標或引用是基於安全與效率的原因;並且一般不改變引數的函式,引數要用
const int* cip或const int& ci;這樣的函式可const和非const引數,若函式引數沒有const
修飾則只能接受非const引數,不能接受const引數,不具有通用性,所以記住如下用法:
void f(const int& ic)
{}注意:所有臨時變數都是常量;
返回值做為const值時表明此返回值不能做為左值或修改,一般用於使用者自定義類,對於內部
資料無意義。
返回值做為const指標時要注意接受返回值的變數要為const所修飾。
二、類內部的const使用
1、類內部const的含義-它在每個類物件裡分配儲存空間,且一旦初始化後就不能改變(執行期常
量),它要在建構函式的初始化表中初始化。
2、要想在類內部使用編譯期常量,可以使用enum列舉;它不會占用儲存空間。
3、const用於成員函式-表明此類函式不會改變物件的資料,能被const物件所呼叫(const物件只
能呼叫const成員函式)但若想在const成員函式中改變資料,有兩種方法:
1>通過this指標把const變數強制轉換為非const的。
2>用mutable修飾要改變的變數。
推薦使用2>。
三、volatile的使用
表示此資料可以被改變--用於編譯器對此資料的優化假定,當編譯器讀取此資料時會認為它已
被改變會再次讀取到暫存器中,不會假定它沒變從而直接使用暫存器的值。
const volatile表示這個物件不能被程式設計師改變,但可以通過外面的工具改變(?不懂)。
C 程式設計思想學習筆記 第八章 常量
第八章 常量概念 由關鍵字const表示 是為了使程式設計師能夠在變和不變之間畫一條界限。這在c 程式設計專案中提供了安全性和可控性 1 值代替 c語言用 define bufsize 100的巨集定義方式來做值替換。好處是100的意義清楚,並且修改方便。有經驗的程式設計師會把100加上括號,以防止...
《Java程式設計思想》學習筆記 介面
介面和內部類為我們提供一種將介面與實現分離的更加結構化發方法 將介面從具體的實現中解耦使得介面可以應用於多種不同的具體實現,因此 具有更好的復用性 工廠方法模式,不同的產品可以有不同的實現,不同的工廠可以生成不同的實際產品物件。這樣,產品物件和工廠之間達到了完全的分離解耦,我們可以任意的更換工廠,以...
java程式設計思想學習筆記 容器
陣列 儲存的基本資料型別 物件,但是陣列的尺寸恆定。容器 存放物件object,可自定義調整自己的尺寸 set中元素無序,但是不能有重複的元素 list必須按照插入的順序儲存元素,元素可重複 map存放成對的 鍵值對 物件 使用鍵來查詢值 collection介面是存放一組物件的方法 方法 在移除某...