请教c++中的类知识
书上讲类看成一个对象,后面略,废话少说,我想说谁讲一下类的作用与使用它,简单通俗点。书上把类讲得复杂了,比c语言数组,指针,链表复杂化,反正我有些懵逼。希望,大神们讲这方面的知识,并且简单化。
類是class,對象是object,不是一回事。
類是一種抽象概念,對象是對應該類的一個實體。擧個例子,“人”是一個類,你通過“人”的概念知道它具備什麽特性和行爲,但世界上沒有抽象的人,只有具體的個人,這種個人就是人類的不同對象。中國古代哲學說“白馬非馬”就是這樣的概念,馬是抽象的類概念,世界上沒有馬,只有各種不同的馬,白馬、黑馬、公馬、母馬等等是派生類,其實也不是實體,只有具體到一匹真正的馬,才是對象,所以才說白馬非馬,派生類固然不等於父類,對象也不是類。
每個類是模板,都可以按照模板生成不定數目的對象,每個對象都有自己的獨特不同之處,但都有同一個類的共性。
定義類只是工程師繪製的設計藍圖,此時還沒有真正的製造對象,光定義類是沒有製造過程的,程序語句中使用諸如new這樣的語法就是生產對象的動作。
程序上的例子:
定義一個坐標類
class point
{
double x;
double y;
}
這是一個二維坐標概念,表明有一對實數,具體對象是諸如(1,2)、(0,-1)這樣的對象,這些對象都可以通過new語句構造在内存中成爲真實的數據引用。類不但可以定義數據,還可以定義行爲,對二維坐標這樣的概念,你可以為它定義矢量運算,比如加法是分別要x相加和y相加的,把這樣與概念本身關聯的數據和行爲算法都定義在類代碼中,就與別的概念不同,你在寫程序代碼時,這些都是看作現實中真正概念的。
面向對象程序員的責任,是設計和實現這樣讓使用程序員使用的工具庫,亦即你有兩種用戶,一種是消費者客戶,另一種是程序員客戶,後者使用你設計的類和工具庫。很多用C++的程序員,其實自己不做面向對象程序設計,而只是拿面向對象語言現成的庫和別人提供的現成工具,實際上寫出來是面向過程的程序代碼,那些從C入門向C++轉化的程序員,絕大多數都會被C的思維局限住很難向對象思維轉型成功。看代碼是可以看出來一個人的思維是C還是C++的,甚至工作過程都可以看得出來,只要他一起手是想如何實現功能而不是想如何定義類和對象的,就是C程序員出身,他最後的產品,一定是傾向於面向過程的,用再多的C++語法和現成庫,都不能改變這個事實。面向對象的程序員,其工作成果,不單是給最終消費客戶使用,更主要的是給別的程序員使用,也是為自己將來維護和擴展產品方便而留給自己使用,他的思維不是爲了交貨、趕時間、為工資工作,他要為整個行業和自己的將來工作,那些怕客戶更改需求和調整、維護程序的,一定是自己寫的代碼本身就難於維護和變更,而面向對象的程序設計思維,本來就是爲了解決這類問題的,他們既然怕這個,就是自己做的時候根本就沒有按照面向對象設計的原理做。“代碼是給人看的,不是給機器看的。”