前面咱們介紹了c++做爲一個面向對象的高級編程語言,知道了面向對象的特徵。今天就開始正式的學習c++了。c++
咱們知道,c++的核心就是把程序功能化,結構化,那麼結構化,就必須有類。
編程
一個類,裏面有變量,有方法(函數)。類裏邊的變量,咱們稱他爲成員變量,函數就稱爲成員函數。
編程語言
因爲c++封裝的特性,通常默認狀況下,類裏邊的成員變量和成員方法都是private的也就是私有的,外部對象是沒法訪問的,這種狀況下類就沒有了任何做用,所以咱們通常把成員變量設爲私有,把成員方法設爲public ,公有的成員方法也稱做接口。
ide
構造函數,和類名相同,無返回值,負責對成員變量初始化。函數
訪問函數,獲得成員變量的值
學習
設置函數,設置(修改)成員變量的值
spa
析構函數,在釋放對象的時候啓用,以~開頭,和類名相同。
對象
通常狀況下,就算咱們不寫構造函數,系統也會給咱們添加一個構造函數,這個構造函數就叫作默認構造函數,他不對成員變量有任何操做。咱們寫的構造函數會屏蔽系統的默認構造函數。可是構造函數是能夠重載的。接口
所謂重載,就是相同的函數名,不一樣的參數列表,(變量類型不一樣,或者變量個數不一樣)
it
默認構造函數分爲兩種,不帶參數的構造函數,帶參數的有默認值構造函數。
不帶參數的構造函數,這就是系統生成的構造函數同樣,不對成員變量有任何操做。可是咱們聲明瞭,系統就不會在生成默認構造函數。
帶參數的有默認值的構造函數,他能夠包含不少狀況,不帶值的,帶有一個值,或者更多值的。
class Thing { private: int x,y; public : //Thing(int a=0,int b=0); Thing (); Thing (int a,int b); }; class Thing { Thing (){}//默認構造函數 Thing (int a,) { x=a; }//重載的構造函數 Thing (int a,int b) { x=a,y=b; }//帶有默認值得構造函數 //Thing (int a,int b); 這條語句和上面的語句不能同時存在,由於帶默認值的構造參數包含了上面的狀況,不復合重載的規則 }
固然了,構造函數還有一個表達方式,就是初始化列表,以「:」開頭後加成員變量(參數值)
如:
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成員函數 只有只讀權限,所以它不可能修改爲員變量的值
在函數定義時三種方式:
一、 函數返回值是const引用,函數的返回值不能被修改(不能作左值)
二、 函數的參數是const引用 函數體內不能修改參數的值int func(constint &)
三、 函數修飾成員函數(只限於類的定義) int function(int)const;在該函數體內不能修改爲員變量(經常使用與打印輸出函數,保護權限)
const 修飾的函數:此函數只能是類成員函數
一、 不能在const成員函數中修改爲員變量的值
二、 只有類的成員函數才能夠被const修飾
三、 函數體內不能調用該函數的對象
四、 只有類成員函數才能夠修飾爲const成員函數
五、 const成員函數只能調用該類中的const成員函數
六、 在類中,類中的一個成員函數有const版本和非const版本