詳解c++構造函數

      前面咱們介紹了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版本

相關文章
相關標籤/搜索