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