您好,登錄后才能下訂單哦!
1、C++語言是基于面向對象的,所以尤其四大特性:
抽象、封裝、繼承、多態。、
抽象:對客觀世界,現實實體的一類定義,找到共性;
封裝:將數據及對數據上的操作捆綁起來;
繼承:子子孫孫無窮匱也;
多態:主要體現在繼承,同一事物的不同表現形式。
2、C++中的類:
與C語言中的結構體類似:
struct STU{ char name[15]; char id[9]; double score; };
以上就可以體現封裝,將不同的數據類型封裝起來,只是沒有方法而已;
新的數據類型為:struct STU a(結構體變量)。
通過類比,可以知道,在C++中通過class定義新的數據類型,
class Test{ public: void setData(int x){ data; } private: int data; };
通過類將其封裝起來,新的數據類型為Test a(對象)。
只不過在C語言中叫做結構體,在C++中叫就做類,是一種對事物共性的抽象,
比C多了對數據上的操作。
3、對象:
在C中將結構體定義的叫做,結構體變量,在C++中將類定義的叫做,對象。
創建對象兩種方式:
靜態創建:Test a; 創建后將對象壓棧;
動態創建:Test *a = new Test; 其申請的空間在堆上,必須通過delete釋放。
4、訪問限定符:
public:公有 protected: 保護 private:私有;
C++中,通過對象只能訪問一個類的public, 對protected和private修飾的通過對象不能調用。
5、深入理解類與對象:
當我們定義一個類的時候,相當于規劃了一幅藍圖,沒有實例化時,是沒有空間的,通過類名.data是錯誤的。
實例化:Test t1(); 錯 這個不會實例化對象t1,因為這是函數聲明,t1是函數名稱,無參,返回值為Test類型;
Test t2; 對 無參的初始化
Test t3(10); 對 含有一個參數的初始化
6、成員方法的實現:
可以在類內直接定義;
也可以在類內聲明,類外定義,加上作用域限定符,
int Test::getData(){ return data; }
加上::這個之后表明getData是Test的成員函數。
7、C++重載
C語言為什么不能重載呢? 從匯編層面可以知道,
void fun(); int fun(int a); double fun(double a, double b)
以上三個函數在C角度看匯編都是fun;名字都相同;
從C++的角度看,其匯編層面的函數名字為:fun funi fundd,是不一樣的,所以C++有函數的重載。
重載:函數名字相同,只與參數列表有關,與返回值無關。
在C++中對重載函數使用extern "C"就可以理解了,
extern "C":將當前函數(C++寫的),當做C編譯,而C編譯只看函數名稱,所以多個重載函數只能出現一次extern “C”!
要是出現兩個,就會造成函數名相同,錯誤。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。