日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

深入了解C++封閉類的定義與使用_C 語言

作者:龍星塵 ? 更新時間: 2022-12-05 編程語言

封閉類

今天,我學習的是C++對象的一種操作.就是成員對象和封閉類.

那么封閉類是什么呢?和普通類用什么不同嗎?

封閉類就是有成員對象的類,那么成員對象是什么呢?我們一起來看一下吧

封閉類分為了輪胎類,引擎類,汽車類......我們可以將封閉類可以看作一個完整的汽車.

那么汽車里面用哪些成員呢,肯定有輪胎對吧,還有引擎,窗戶等等,那么輪胎有什么成員呢?有外層的橡膠,里面的金屬,對吧.輪胎寫成一個對象后,這個輪胎呢是汽車的一部分,而汽車也是一個對象,所以輪胎就是一個成員對象,而汽車呢因為包含了其他對象,就叫做封閉類.

接下來,就可以開始寫程序了.

我們先寫輪胎,輪胎的材質橡膠也可以寫成一個對象,包含著橡膠的大小,尺存什么的.而我要給大家做一個最簡單的例子,就不用寫橡膠,金屬什么的了!這個輪胎是一個圓對吧,圓肯定有半徑吧,寬度/長度吧,還有高啊,都可以寫進去:

輪胎類

#include<bits/stdc++.h>
using namespace std;
class CTyre{ //輪胎類 
  private:
    int redius; //半徑
    int width;  //寬度或長度
    int height; //高度
  public:
  CTyre(){ //構造函數 
    redius=0,width=0,height=0; //賦值 
  } 
  ~CTyre(){ //析構函數 
    printf("%d %d %d\n",redius,width,height); //類銷毀時輸出這3個成員的值 
  }
  /*
  ......  圓的體積 
  ......  圓的表面積 
  ......  等等 
  */
};

這個就是我寫的其中一個類,輪胎類,里面標注著輪胎的半徑,長,高,還有構造函數和祈構函數,中間省略的部分可以寫這種東西,這個輪胎的作用等等.

寫完了輪胎,還有什么呢?自然就是引擎了,引擎類里面需要有什么成員呢?首先我們要知道這個引擎是否是好的,還要知道這個引擎是不是開啟的,還可以知道這個引擎里面的引擎個數,最后還可以看一下這個引擎的生產公司.

引擎類

#include<bits/stdc++.h>
using namespace std;
class CEngine{ //引擎類 
  private:
    bool use; //是否正在使用
    bool good_bad; //這個引擎是好的還是壞的
    int parts; //零件的個數
    string production; //生產公司的名稱
  public:
  CEngine(){ //構造函數初始化 
    use=false;
    good_bad=true;
    parts=10000; //一般汽車引擎就是這么多零件
    production="豐田汽車"; //目前世界上最大汽車公司 
  } 
  ~CEngine(){ //析構函數 
    cout<<use<<" "<<good_bad<<" "<<parts<<" "<<production<<endl;
  }
  /*
  ......  這個引擎是否是好的 
  ......  這個引擎現在在使用嗎? 
  ......  等等 
  */
};

除了引擎和輪胎,汽車肯定還要很多其他的重要部分,由于過于復雜,今天我們就只寫這兩個成員類.

有了引擎和輪胎,就可以有汽車了,汽車里面有什么成員呢?首先,就是這個汽車的價格,然后才是是引擎和輪胎等各種成員類,注意一下,如果是一個成員類的話,構造函數用參數,在寫成員類的時候是不需要加參數的:

汽車類

#include<bits/stdc++.h>
using namespace std;
class CCar{ //汽車類 
  private:
    int price; //汽車的價格 
    CTyre tyre; //汽車的輪胎 
    CEngine engine; //汽車的引擎
  public:
  CCar(int p){//構造函數 
    price=p; //賦值 
  } 
  ~CCar(){ //析構函數 
    printf("%d\n",price); //只用輸出這個價格 
  }                         //因為輪胎和引擎類消亡后會自動使用祈構函數      
};

這個CCar就是我們的封閉類了,里面有著引擎和輪胎兩個成員對象.

現在我講一下寫封閉類的注意事項:

1.任何生成封閉類的語句,都要讓編譯器明白,對象中的成員對象,是如何進行初始化的.

2.封閉類對象生成時,先執行所有對象成員的構造函數,然后才執行封閉類自己的構造函數.

3.對象成員的構造函數調用次序和對象成員在類中的說明次序一致.

4.和構造函數正好相反,當封閉類對象消亡時,先執行封閉類的析構函數,然后再執行成員對象的析構函數.調用次序也和構造函數的調用次序相反.

總代碼

#include<bits/stdc++.h>
using namespace std;
class CEngine{ //引擎類 
    private:
        bool use; //是否正在使用
        bool good_bad; //這個引擎是好的還是壞的
        int parts; //零件的個數
        string production; //生產公司的名稱
    public:
    CEngine(){ //構造函數初始化 
        use=false;
        good_bad=true;
        parts=10000; //一般汽車引擎就是這么多零件
        production="豐田汽車"; //目前世界上最大汽車公司 
    } 
    ~CEngine(){ //析構函數 
        cout<<use<<" "<<good_bad<<" "<<parts<<" "<<production<<endl;
    }
    /*
    ......  這個引擎是否是好的 
    ......  這個引擎現在在使用嗎? 
    ......  等等 
    */
};
class CTyre{ //輪胎類 
    private:
        int redius; //半徑
        int width;  //寬度或長度
        int height; //高度
    public:
    CTyre(){ //構造函數 
        redius=0,width=0,height=0; //賦值 
    } 
    ~CTyre(){ //析構函數 
        printf("%d %d %d\n",redius,width,height); //類銷毀時輸出這3個成員的值 
    }
    /*
    ......  圓的體積 
    ......  圓的表面積 
    ......  等等 
    */
};
class CCar{ //汽車類 
    private:
        int price; //汽車的價格 
        CTyre tyre; //汽車的輪胎 
        CEngine engine; //汽車的引擎
    public:
    CCar(int p){//構造函數 
        price=p; //賦值 
    } 
    ~CCar(){ //析構函數 
        printf("%d\n",price); //只用輸出這個價格 
    }                         //因為輪胎和引擎類消亡后會自動使用祈構函數      
};
int main(){
    CCar a(10000);
} 

程序輸出:

原文鏈接:https://blog.csdn.net/wo_ai_luo_/article/details/127638588

欄目分類
最近更新