1.宣告和定義
為了讓多個檔案訪問相同的變數,c++
區分了宣告和定義。
定義:用於為變數分配儲存空間,同時為變數指定初始值。乙個程式中變數有且只有乙個定義。
1.1 extern
宣告:用於向程式表明變數的型別和名字。定義也是宣告,定義變數時宣告了它的型別和名字。可以使用extern
關鍵字宣告變數名而不定義它。
extern
宣告不是定義,也不分配儲存空間。事實上,他只是說明變數定義在程式的其他地方。
注意:程式中變數可以宣告多次,但只能定義一次。只有生命也是定義時,宣告才能初始化。只有當宣告位於函式外時,才可以含初始化式。
用法:任何在多個檔案中使用的變數都需要有與定義分離的宣告。在這種情況下,乙個檔案含有變數的定義,使用該變數的其他檔案則包含該變數的宣告(不是定義!)
1.2 名字的作用域
1全域性作用域:定義在函式外部的具有全域性作用域,可以在定義該變數的檔案中的任何地方訪問
2區域性作用域:在函式中定義,則只能在這個函式中使用,當函式外,則不能使用
3語句作用域:只能在for
語句中使用,而不能在其他地方使用。
定義在全域性作用域中的名字可以在區域性作用域中使用。若全域性作用域的變數名字和區域性作用域中的變數名字相同,則區域性變數的定義遮蔽全域性變數的定義,當區域性作用域結束,全域性變數再恢復。
1在函式內部定義乙個與函式可能會用到的全域性變數同名的區域性變數是不好的程式設計習慣。區域性變數最好使用不同的名字
2.通常把乙個物件定義在他首次使用的地方是乙個良好的辦法。
1.3 const限定符
1.3.1定義
const
物件 const限定符把乙個物件轉換成乙個常量(不可修改的)。因為常量在定義後就不可修改,所以定義時必須初始化。
1.3.2 const物件預設為檔案的區域性變數
在全域性作用域中定義非const
變數時,他在整個程式中可以訪問。如下圖:
但是const
變數不同,預設情況下,全域性作用域中的
const
變數屬於定義該變數的區域性變數,這意味著該變數只能在定義該檔案中被使用,不能被其他檔案訪問。這裡我們需要指定
const
變數為extern
,這樣整個程式中訪問
const
物件。具體如下圖:
總結:非const
變數預設為
extern ,
要使const
變數弄夠在其他的檔案訪問,必須顯式的指定他為
extern
。2.引用
引用就是物件的另乙個名字。實際中,引用主要用於函式的形參。引用是一種復合型別(
變數名前加&)
復合型別:是指用其他型別定義的類。在引用情況下,每一種引用型別都」關聯到」某一其它型別。
注意:不能定義引用型別的引用,同時引用必須用同型別的物件進行初始化(初始化是指明引用志向哪個物件的唯一方法)。當引用初始化後,就只能保持繫結到初始化時的物件,不能將引用繫結到另乙個物件
2.1 引用是別名
引用只是他繫結物件的乙個別名,操作引用實際上都是在操作繫結物件。
2.2 const引用
const引用是指向
const
物件的引用。
const
引用可以指向
const
物件,也可以指向非
const
物件,而非
const
引用可以繫結到非
const
物件,但不能繫結到
const
物件上。
同時需要注意:const
引用可以繫結到不同但相關的型別的物件或繫結到右值,非
const
引用則必須繫結到與該引用同型別的物件。例子如下:
3 類型別
c++通過定義類來自定義資料型別。類定義了該型別的物件的資料和該類的物件可以執行的操作。
每個類都定義了乙個介面和實現。
介面:這個類都提供哪些操作
實現:定義並實現操作。
定義類時通常先定義該類的介面(該類所提供的操作)。類體可以為空,類體定義了組成該型別的資料和操作。操作稱為成員函式。資料稱為成資料成員。定義變數和定義資料成員有很大差別:一般不能把類成員的初始化作為其定義的一部分。就是說只能指定資料成員的名字和型別,類為資料成員初始化專門提供了方法:建構函式。
訪問標號(public,private,protect
)負責控制訪問。類的成員函式可以使用類的任何成員,不管其訪問級別。訪問標號(
public,private,protect
)可以多次出現在類定義中。給定的訪問標號(
public,private,protect
)應用到下個訪問標號(
public,private,protect
)出現為止。
public:定義的成員可以在程式中的任何部分訪問。一般把成員函式放在
public中
private:不是類的組成部分不能訪問
private
成員,一般把資料成員放在
private中
注意:在class
和struct
關鍵字定義類的唯一差別在於預設訪問級別:預設情況下,
class
的成員為
private,struct
的成員為
public
變數和基本型別
算術型別 arithmetic type c 標準規定了每個算術型別的最小儲存空間,但允許編譯器使用更大的儲存空間。事實上,對於int型,幾乎現在所有的編譯器使用的儲存空間都比所要求的大 也表明,在編寫程式時不能對這些型別的大小做任何假設 c 算術型別最小儲存空間規定如下 注 要特別注意int型,並...
變數和基本型別
c 程式通常由許多檔案組成,為了讓多個檔案訪問相同的變數,c 區分了宣告和定義。變數的定義 definition 用於為變數分配儲存空間,還可以為變數指定初始值。在乙個程式中,變數有且僅有乙個定義。c 支援兩種初始化變數的形式 複製初始化 copy initialization 和直接初始化 dir...
變數和基本型別
一 資料型別 c 主要有bool,char,short,int,long,long long float,double,long double,wchar t 寬字元 char16 t char32 t unicode字元 每個型別對應不同的位元組尺寸,以上型別都是有符號的,加上關鍵字unsigne...