使用物件進行程式設計是c++的核心,也是我們常說的c++比c「高階」的重要根據之一。
但是不希望大家因為這樣就對這個看起來很深奧的概念望而生畏。。。
所以要明確的告訴大家:物件的本質上不過是一種新的資料型別,只不過它擁有無限的潛力。。。|
打個比方就像再美麗的女孩本質上不過也是女,只不過她擁有無限的選擇。。。
我們從乙個類開始,首先類是乙個模型。當我們為這個類建立例項的時候,也就是物件本身。這跟我們之前講解的定義和使用結構的過程很相似,但是這更有擴充套件性和前瞻性。
我們知道,要找物件,內心先要有物件的模型不然怎麼知道你找到後是豬還是牛?
建立簡單的類
因此,我們首先需要知道的一件事情是如何編寫乙個簡單物件的模型-類
類(class)就像是一副藍圖,它決定乙個物件將是什麼樣的(具備什麼樣的屬性、功能)。
所以oop過程的第一步是建立乙個類,而每個類跟變數一樣都有乙個名字,我們就從如何宣告乙個類說起:
classmyfirstclass
;
就這樣,我們建立了乙個類!雖然它什麼都幹不了,但它是乙個起點,乙個成功的開始。
注意,類名的第乙個字母採用大寫是一種習慣的上的標準,但不是硬性規定。還有在類宣告末尾,必須有乙個分號,這一點跟c++結構情況相同。
類由變數和函式組成,物件將使用那些變數來儲存資訊,呼叫那些函式來完成操作。所以人們常常會看到一些專門術語:類裡邊的變數成為屬性,函教成為方法。注意,他們的本質沒有改變。
讓我們來造輛車:
classcar ;//
先動手,別等咯~
我們需要在宣告變數之前先寫出單詞「public:" ,稍後我們將對此做法的理由作出解釋!
剛剛我們宣告了一輛車的簡單屬性,現在我們應該讓他能跑起來吧?那麼我們應該為類定義一些方法,其實也就是定義一些函式罷了。建立個人函式也是兩個步驟的過程:先建立函式的原型(宣告),再描述該函式本身實現過程。
給類新增方法如出一轍:先在類的宣告裡建立乙個方法的原型,稍後再實現這個方法。
classcar;
現在我們的 car類有了乙個名為filltank的方法,它只有乙個輸入引數,不需要任何返回值。 但是我們只有他的原型(宣告),想要使用它,我們還需要對這個函式進行正式的定義(即告訴系統如何去實現它)。 方法的定義通常安排在類宣告的後面:
void car::filltank(floatliter)
我們發覺作用域解析操作符(::),作用是告訴編譯器這個方法存在於何處,或者說是屬於哪乙個類。 其實我們對這個不應該感到陌生,從乙個開始就不提倡using namespace std;這樣偷懶的做法,所以我們是std::cout。。。
事實上std::cout所引用的是std裡定義的cout,而std::string資料型別其實也是乙個物件。我們一直在使用物件,只是自己還不知道罷了。
#include #include#define full_gas 85
class
car;
void car::setcolor(std::string
col)
void car::setengine(std::string
eng)
void car::setwheel(unsigned int
whe)
void car::filltank(int
liter)
int car::running(void
)void car::warning(void
) //
這輛車還是存在一些bug,你能夠發現它並debug它嗎?
intmain()}}
return0;
}
pay attention:
物件導向程式設計技術(object-oriented programming)可以說是面向過程技術(procedural programming)的替代品。 面向過程技術關注的是對資料進行處理的過程,oop技術關注的是對資料進行怎樣的處理。 物件與結構有很多相似之處,但前者還可以有它們自己的函式。記住這點區別對掌握oop技術的要領很有幫助。
有些程式設計師喜歡把類的宣告和類的函式的定義分別存入兩個不同的檔案,前者存入.h標頭檔案,後者存入相應的.cpp檔案。這點今後我們會討論。
c++允許在類裡宣告常量,但不允許對它進行賦值:
classcar
繞開這一限制的方法就是建立乙個靜態常量:
classcar
這種做法還有其他更高明的含義,以後我們將逐步介紹給大家。
類似於使用結構的情況,可以在宣告某個類的同時立刻建立一些該類的物件:
classcar car1, car2;
這種做法在c++裡是允許的。但作為一種良好的程式設計習慣,應該避免這種做法!
最後,假設我們有以下**:
car car1, car2;car1.setcolor(「white」);
。。。。。。
car2 = car1;
把乙個物件賦值給另乙個同類的物件將會自動使同名的屬性有同樣的值。
課時36 類與物件 給大家介紹物件
目錄 一 物件 屬性 方法 二 課時36課後習題及答案 大家之前已經聽說過封裝的概念,把亂七八糟的資料扔進列表裡面,這是一種封裝,是資料層面的封裝 把常用的 段打包成乙個函式,這也是一種封裝,是語句層面的封裝 本章學習的物件,也是一種封裝的思想,不過這種思想顯然要更高階一步 物件的 是模擬真實世界,...
python入門 P36類和物件 給大家介紹物件
下面展示一些python3建立類,類的屬性 方法,以及呼叫的 這裡還用到了多型,物件fighter和defender都呼叫了相同名字的方法,但卻實現的是不同的功能 tips 類的定義首字母一般大寫,方法一般小寫,便於區分 class fight define class name color gre...
介紹幾種苦瓜的吃法,給大家降降火
夏天到了,又是苦瓜上市時,苦瓜清熱涼血,有明顯的降血糖之功。介紹幾種做苦瓜的方法,大家分享,呵呵 1 涼拌苦瓜 切成片或段,直接拿鹽一拌,撒上些熟芝麻或倒上點香油,或乾脆芝麻和香油都不要,就可以吃了。2清炒苦瓜或者炒雙瓜 苦瓜和黃瓜 少擱油,放點蒜茸爆鍋,瓜提前弄鹽滷一下,翻炒幾下就成,出鍋前撒點蘑...