深入了解C++封閉類的定義與使用
封閉類
今天,我學習的是C++對象的一種操作.就是成員對象和封閉類.
那么封閉類是什么呢?和普通類用什么不同嗎?
封閉類就是有成員對象的類,那么成員對象是什么呢?我們一起來看一下吧
封閉類分為了輪胎類,引擎類,汽車類......我們可以將封閉類可以看作一個完整的汽車.
那么汽車里面用哪些成員呢,肯定有輪胎對吧,還有引擎,窗戶等等,那么輪胎有什么成員呢?有外層的橡膠,里面的金屬,對吧.輪胎寫成一個對象后,這個輪胎呢是汽車的一部分,而汽車也是一個對象,所以輪胎就是一個成員對象,而汽車呢因為包含了其他對象,就叫做封閉類.
接下來,就可以開始寫程序了.
我們先寫輪胎,輪胎的材質(zhì)橡膠也可以寫成一個對象,包含著橡膠的大小,尺存什么的.而我要給大家做一個最簡單的例子,就不用寫橡膠,金屬什么的了!這個輪胎是一個圓對吧,圓肯定有半徑吧,寬度/長度吧,還有高啊,都可以寫進去:
輪胎類
#include<bits/stdc++.h> using namespace std; class CTyre{ //輪胎類 private: int redius; //半徑 int width; //寬度或長度 int height; //高度 public: CTyre(){ //構造函數(shù) redius=0,width=0,height=0; //賦值 } ~CTyre(){ //析構函數(shù) printf("%d %d %d\n",redius,width,height); //類銷毀時輸出這3個成員的值 } /* ...... 圓的體積 ...... 圓的表面積 ...... 等等 */ };
這個就是我寫的其中一個類,輪胎類,里面標注著輪胎的半徑,長,高,還有構造函數(shù)和祈構函數(shù),中間省略的部分可以寫這種東西,這個輪胎的作用等等.
寫完了輪胎,還有什么呢?自然就是引擎了,引擎類里面需要有什么成員呢?首先我們要知道這個引擎是否是好的,還要知道這個引擎是不是開啟的,還可以知道這個引擎里面的引擎?zhèn)€數(shù),最后還可以看一下這個引擎的生產(chǎn)公司.
引擎類
#include<bits/stdc++.h> using namespace std; class CEngine{ //引擎類 private: bool use; //是否正在使用 bool good_bad; //這個引擎是好的還是壞的 int parts; //零件的個數(shù) string production; //生產(chǎn)公司的名稱 public: CEngine(){ //構造函數(shù)初始化 use=false; good_bad=true; parts=10000; //一般汽車引擎就是這么多零件 production="豐田汽車"; //目前世界上最大汽車公司 } ~CEngine(){ //析構函數(shù) cout<<use<<" "<<good_bad<<" "<<parts<<" "<<production<<endl; } /* ...... 這個引擎是否是好的 ...... 這個引擎現(xiàn)在在使用嗎? ...... 等等 */ };
除了引擎和輪胎,汽車肯定還要很多其他的重要部分,由于過于復雜,今天我們就只寫這兩個成員類.
有了引擎和輪胎,就可以有汽車了,汽車里面有什么成員呢?首先,就是這個汽車的價格,然后才是是引擎和輪胎等各種成員類,注意一下,如果是一個成員類的話,構造函數(shù)用參數(shù),在寫成員類的時候是不需要加參數(shù)的:
汽車類
#include<bits/stdc++.h> using namespace std; class CCar{ //汽車類 private: int price; //汽車的價格 CTyre tyre; //汽車的輪胎 CEngine engine; //汽車的引擎 public: CCar(int p){//構造函數(shù) price=p; //賦值 } ~CCar(){ //析構函數(shù) printf("%d\n",price); //只用輸出這個價格 } //因為輪胎和引擎類消亡后會自動使用祈構函數(shù) };
這個CCar就是我們的封閉類了,里面有著引擎和輪胎兩個成員對象.
現(xiàn)在我講一下寫封閉類的注意事項:
1.任何生成封閉類的語句,都要讓編譯器明白,對象中的成員對象,是如何進行初始化的.
2.封閉類對象生成時,先執(zhí)行所有對象成員的構造函數(shù),然后才執(zhí)行封閉類自己的構造函數(shù).
3.對象成員的構造函數(shù)調(diào)用次序和對象成員在類中的說明次序一致.
4.和構造函數(shù)正好相反,當封閉類對象消亡時,先執(zhí)行封閉類的析構函數(shù),然后再執(zhí)行成員對象的析構函數(shù).調(diào)用次序也和構造函數(shù)的調(diào)用次序相反.
總代碼
#include<bits/stdc++.h> using namespace std; class CEngine{ //引擎類 private: bool use; //是否正在使用 bool good_bad; //這個引擎是好的還是壞的 int parts; //零件的個數(shù) string production; //生產(chǎn)公司的名稱 public: CEngine(){ //構造函數(shù)初始化 use=false; good_bad=true; parts=10000; //一般汽車引擎就是這么多零件 production="豐田汽車"; //目前世界上最大汽車公司 } ~CEngine(){ //析構函數(shù) cout<<use<<" "<<good_bad<<" "<<parts<<" "<<production<<endl; } /* ...... 這個引擎是否是好的 ...... 這個引擎現(xiàn)在在使用嗎? ...... 等等 */ }; class CTyre{ //輪胎類 private: int redius; //半徑 int width; //寬度或長度 int height; //高度 public: CTyre(){ //構造函數(shù) redius=0,width=0,height=0; //賦值 } ~CTyre(){ //析構函數(shù) printf("%d %d %d\n",redius,width,height); //類銷毀時輸出這3個成員的值 } /* ...... 圓的體積 ...... 圓的表面積 ...... 等等 */ }; class CCar{ //汽車類 private: int price; //汽車的價格 CTyre tyre; //汽車的輪胎 CEngine engine; //汽車的引擎 public: CCar(int p){//構造函數(shù) price=p; //賦值 } ~CCar(){ //析構函數(shù) printf("%d\n",price); //只用輸出這個價格 } //因為輪胎和引擎類消亡后會自動使用祈構函數(shù) }; int main(){ CCar a(10000); }
程序輸出:
到此這篇關于深入了解C++封閉類的定義與使用的文章就介紹到這了,更多相關C++封閉類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C++初學者之根據(jù)輸入的任何一個正整數(shù),輸出可能被表示的連續(xù)正整數(shù)
這篇文章主要介紹了C++初學者之根據(jù)輸入的任何一個正整數(shù),輸出可能被表示的連續(xù)正整數(shù)的相關資料,需要的朋友可以參考下2016-03-03C++深入分析內(nèi)聯(lián)函數(shù)的使用
為了消除函數(shù)調(diào)用的時空開銷,C++ 提供一種提高效率的方法,即在編譯時將函數(shù)調(diào)用處用函數(shù)體替換,類似于C語言中的宏展開。這種在函數(shù)調(diào)用處直接嵌入函數(shù)體的函數(shù)稱為內(nèi)聯(lián)函數(shù)(Inline Function),又稱內(nèi)嵌函數(shù)或者內(nèi)置函數(shù)2022-04-04OpenCV使用稀疏光流實現(xiàn)視頻對象跟蹤的方法詳解
這篇文章主要為大家詳細介紹了OpenCV如何使用稀疏光流實現(xiàn)視頻對象跟蹤功能,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下2023-02-02Qt圖形圖像開發(fā)曲線圖表模塊QChart庫基本用法、各個類之間的關系說明
這篇文章主要介紹了Qt圖形圖像開發(fā)曲線圖表模塊QChart庫基本用法、各個類之間的關系說明,需要的朋友可以參考下2020-03-03