如何理解C++的類和對象?
通俗易懂 別搬概念
作為一個寫了很久C的,目前正在學習C++的菜雞來回答下
本答案從兩個方面回答,一個是通俗易懂的大白話解釋,二個是略顯專業的角度
Ⅰ大白話
其實類就好比機械加工里的經常聽到的開模(這個概念確實不知可以百度下,很easy),比如我們想加工一個齒輪,這個模具是標準件,直接和工廠的師傅說一聲就可以加工,但對於我們特殊的工件,如果想成批生產的時候,最好是開模做一個這個特殊工件的模具,然後用這個模具就可以成批的加工一個個的工件。
回到C++這個問題里,類就好比這個模具,而對象就好比一個個的工件。
大白話的解釋只能到這裡了,不知道通不通俗?易不易懂? 不行的話,評論區留言我繼續想更好的例子
Ⅱ略顯專業
對於初學C++的朋友一看到類class的時候,可能都會想:這玩意兒和C的結構體有什麼區別么? 這個問題問的好啊,我就來回答下這個問題進而推動題主的理解
下面這個是C的結構體,並不陌生
typedef struct
{
int pos_flg;
char pid_pos;
float pid_ang;
pos_ctl_t pos;
}
route_ctl_t;
這個結構體里可以有各種常規內置類型int char float ,也可以有我們自定義的類型pos_ctl_t,我們可以用這個結構體來定義一個結構體變數route_inf
route_ctl_t route_inf;
但可能寫久了的人會想C的結構體里為啥不能寫函數呢?於是C++彌補了這個缺憾,並起了個名字叫做類,而用類定義的「變數」也不叫做變數了,而叫做對象
class complex{
private:
int a;
int b;
public://構造函數
complex(int a = 0, int b = 0) {
this-&>a = a;
this-&>b = b;
}
public://重載函數和友元函數
friend complex operator +(complex t1, complex t2);
complex operator-(complex t){
complex tmp(this-&>a - t.a, this-&>b - t.b);
return tmp;
}
public://成員函數 也許你還會問
void comprint() {
cout&<&< this-&>a &<&<" + " &<&< this-&>b &<&< "i" &<&
- ?1 C++編譯器如何完成面向對象理論到計算機程序的轉化?
- ?2 很多對象共用一塊代碼?代碼是如何區分具體對象的?
答案點進去就看到了哦~
我覺得寫到這裡就足以解釋清楚類和對象了,不知道題主明白沒?
其實我想多說一句,C++只是C的一個升級和封裝,紮實的C對理解C++有很大的幫助。
知乎回答了不少問題,卻沒人贊,這次我就厚顏無恥的求個贊吧
你如果不想學習並理解抽象的概念,我覺得你作為一個程序猿是木有前途的,所以這種問題就表浪費你我的時間了吧,科學技術本身就是現實世界的抽象和演繹
比如學生student就是一個類,通常有姓名,性別,年齡,學號等等屬性。而具體到某一學生,比如student png,他的屬性分別為張三,男,21,1234等等,這個png就是一個對象。
你還可以類比人類person和一個具體的人,比如你自己來理解。
類是一類有相同或者相似屬性的事物,是抽象的;而對象是具有具體屬性值的一個個體,是具體的。"人類"是一個類,你就是屬於"人類"這個類中的一個具體的"對象"。
類就是模具,你往裡面倒入麵糊糊,烤一烤就做了個蛋糕出來,這個蛋糕就是對象。
知乎淪落為百度知道,新浪愛問。
類是對象的模板,對象是類的實例
建議自行百度
不找對象很類,找了對象更類。
推薦閱讀:
※神機妙算一掌經
※為什麼好多人說C++代碼丑?
※用C++看這個規律1/2 2/3 3/5 5/8 8/13一直寫到第20個的值?
※有哪些優秀的 C++ 代碼庫可以推薦學習?