前面我們介紹了c++作為乙個物件導向的高階程式語言,知道了物件導向的特徵。今天就開始正式的學習c++了。
我們知道,c++的核心就是把程式功能化,結構化,那麼結構化,就必須有類。
乙個類,裡面有變數,有方法(函式)。類裡邊的變數,我們稱他為成員變數,函式就稱為成員函式。
由於c++封裝的特性,一般預設情況下,類裡邊的成員變數和成員方法都是private的也就是私有的,外部物件是無法訪問的,這種情況下類就沒有了任何作用,因此我們一般把成員變數設為私有,把成員方法設為public ,公有的成員方法也稱作介面。
建構函式,和類名相同,無返回值,負責對成員變數初始化。
訪問函式,得到成員變數的值
設定函式,設定(修改)成員變數的值
析構函式,在釋放物件的時候啟用,以~開頭,和類名相同。
一般情況下,就算我們不寫建構函式,系統也會給我們新增乙個建構函式,這個建構函式就叫做預設建構函式,他不對成員變數有任何操作。我們寫的建構函式會遮蔽系統的預設建構函式。但是建構函式是可以過載的。
所謂過載,就是相同的函式名,不同的引數列表,(變數型別不同,或者變數個數不同)
預設建構函式分為兩種,不帶引數的建構函式,帶引數的有預設值建構函式。
不帶引數的建構函式,這就是系統生成的建構函式一樣,不對成員變數有任何操作。但是我們宣告了,系統就不會在生成預設建構函式。
帶引數的有預設值的建構函式,他可以包含很多情況,不帶值的,帶有乙個值,或者更多值的。12
3456
78910
1112
1314
1516
1718
1920
2122
23class
thing
;
class
thing
//預設建構函式
thing (
int
a,)
//過載的建構函式
thing (
int
a,
int
b)
//帶有預設值得建構函式
//thing (int a,int b); 這條語句和上面的語句不能同時存在,因為帶預設值的構造引數包含了上面的情況,不復合過載的規則
}
當然了,建構函式還有乙個表達方式,就是初始化列表,以「:」開頭後加成員變數(引數值)如:1
thing (
int
a,nt b):x(a),y(b)p{}
在以下情況下必須用初始化列表:
類中的const成員、類中的引用成員、父類中無缺省建構函式,在子類中對父類成員初始化必須使用初始化列表。
還有乙個小知識點,就是 const 修飾的物件:
在c語言中,我們知道const 修飾的變數一經初始化就不能在改變了,那麼在c++中,是怎麼樣呢?
在c++中 所有內容分為兩類,物件 const修飾物件 普通物件
成員 const修飾 普通成員
方法 const修飾方法 非const方法
其中,非const修飾的物件可以呼叫const成員函式也可呼叫普通成員函式
const物件只能呼叫const 成員函式
const成員函式 只有唯讀許可權,因此它不可能修改成員變數的值
在函式定義時三種方式:
1、 函式返回值是const引用,函式的返回值不能被修改(不能做左值)
2、 函式的引數是const引用 函式體內不能修改引數的值int func(constint &)
3、 函式修飾成員函式(只限於類的定義) int function(int)const;在該函式體內不能修改成員變數(常用與列印輸出函式,保護許可權)
const 修飾的函式:此函式只能是類成員函式
1、 不能在const成員函式中修改成員變數的值
2、 只有類的成員函式才可以被const修飾
3、 函式體內不能呼叫該函式的物件
4、 只有類成員函式才可以修飾為const成員函式
5、 const成員函式只能呼叫該類中的const成員函式
6、 在類中,類中的乙個成員函式有const版本和非const版本
C 建構函式詳解
c 類的建構函式詳解 一 建構函式是幹什麼的 class counter private 資料成員 int m value 該類物件被建立時,編譯系統物件分配記憶體空間,並自動呼叫該建構函式 由建構函式完成成員的初始化工作 eg counter c1 編譯系統為物件c1的每個資料成員 m value...
c 建構函式詳解
c 類的建構函式詳解 一 建構函式是幹什麼的 class counter private 資料成員 int m value 該類物件被建立時,編譯系統物件分配記憶體空間,並自動呼叫該建構函式 由建構函式完成成員的初始化工作 eg counter c1 編譯系統為物件c1的每個資料成員 m value...
C 建構函式詳解
c 建構函式的知識在各種c 教材上已有介紹,不過初學者往往不太注意觀察和總結其中各種建構函式的特點和用法,故在此我根據自己的c 程式設計經驗總結了一下c 中各種建構函式的特點,並附上例子,希望對初學者有所幫助。c 類的建構函式詳解 一 建構函式是幹什麼的 class counter private ...