運算子過載:
運算子過載是一種重新規劃運算子的功能,比如我們建立了乙個類,而類和類相加不能得到我們想要的結果,所以我們需要重新規劃一下運算子的功能。
比如:class a
int x,y;
a a,b;
a.x=1;b.x=1;a.y=2;b.y=2;
a c;
c=a+b; //無效,因為a與b都是自己創造的類,如果這麼寫是沒有意義的
如果加乙個過載,如:
a::operator+(a c); //最簡lambda函式
int a=3,b=4;
[=];//省略引數列表和返回型別,推斷返回為int
auto fun1=[&]; //無返回型別
auto fun2=[=,&b](int c)->int; //完整型
組合和繼承:
組合很簡單,是類上用另乙個類而已,如:
class a
int x;
class b
a y;
b a;
即可進行a.y.x=1;這樣的操作,非常簡單。
繼承:在已有類的基礎上進行拓展,使其成為乙個新類,用繼承方式建立新類時,要指明這個新類是在哪個已有類的基礎上擴充套件的。
例子:class a
int x,y;
public:
int hs1()
class b::public a
int x,y;
public:
int hs2()
b a;
a.hs1();a.hs2();
這樣在b類中我們就可以進行hs1與hs2的操作,繼承了類a中的功能,我們需要注意繼承方式。
例子中的繼承方式使用的是public,還有protect以及private方式繼承。
public成員:能夠被程式中的任何函式訪問。
private成員:只可以被自己的成員函式和友元訪問。
protected被保護成員:是一種特殊的私有成員,不能被全域性函式或者其他類中的成員函式訪問,但可以被派生類的成員函式和友元函式訪問。
多繼承:
多繼承指的是基類有著多種派生類,派生類與每種基類仍可以看做是單繼承。
若三個類的關係是a<---c, b<---c,則c的記憶體結構就先是a,b。而如果是a,b<--c則c中含有a,b的函式,可以實現a,b功能的介面。
虛函式與多型:
虛函式是一種以virtual關鍵字申明的函式,是一種類的函式,存在虛函式的類當中都有乙個虛表,有乙個指向虛表開始位置的指標叫做虛指標,多型是乙個介面的多種實現,也就是見人說人話見鬼說鬼話,多型要用虛函式來實現,結合動態繫結,純虛函式的虛函式要加=0;抽象類包括至少乙個虛函式。
例子:#include
using namespace std;
class a
};class b:public a
};int main()
主要是看指標指向哪個類,就輸出哪個類的所對應的虛函式或者函式名,這樣就實現了見人說人話見鬼說鬼話。
純虛函式:
class a
;class b: public a
{};純虛函式沒有函式體,那個=0並不是賦值,而是說明這是乙個純虛函式,因為這是乙個說明函式,所以要有分號,純虛函式不具備函式功能,僅有乙個函式名,所以不能被呼叫,如果含有純虛函式的類被呼叫,而派生類依然沒有定義純虛函式,則此純虛函式在派生類中還是純虛函式。
純虛函式的作用是在基類事先為派生類創造乙個函式的名字,可以讓派生類對其定義。如果在基類中沒有保留函式的名字,就無法實現多型性。
c語言課程總結
這個星期的c語言課程學習結束了,學習c是因為很多語言都具有c的影子,作為前端學習,雖然不是後端,但是對後端語言的學習也是必不可少的,而且前端學習涉及的東西太廣泛,所以,擁有乙個程式設計的思維,和乙個良好的程式設計習慣是必不可少的,c的學習正是對我這方面的鍛鍊和提高,現在我自己總結一下這個星期的學習,...
c 程式設計課程總結
目錄類與物件 1.物件 系統中用於描述客觀事物的乙個實體,系統的基本單位 由一組屬性和一組行為組成。2.類 具有相同屬性和行為的一組物件的集合 3.封裝 把物件的屬性和服務結合承乙個獨立的系統單位,並盡可能隱蔽物件的內部細節 4.繼承 特殊類的物件具有其一般類的全部屬性和行為 5.多型性 特殊類可以...
c 課程總結3(繼承 多型)
一 繼承 繼承主要實現重用 節省開發時間。1 類繼承關係的語法形式 class 派生類名 基類名錶 2 繼承符合的規則 繼承是可傳遞的。如果c從b中派生,b又從a中派生,那麼c不僅繼承了b中宣告的成員,同 樣也繼承了a中的成員。派生類應當是對基類的擴充套件。派生類可以新增新的成員,但不能除去已經繼承...