C 重點總結

2021-09-10 13:23:01 字數 2999 閱讀 6480

public和private用來支援類的封裝特性,使用public修飾的成員可以在類的外部進行訪問,使用private修飾的類成員只能在類的內部和友元中訪問。

protected用來支援類的繼承特性,用protected修飾的成員可以被派生類物件訪問,不能被使用者**(類外)訪問。

#include

using namespace std;

class shape

void

setheight

(int h)

// 如果這裡用private修飾,那麼在rectangle中的getarea方法中就無法使用width和height這兩個私有屬性

protected:

//private:

int width;

int height;};

/* 子類的繼承也有public, protected, private三種繼承方式

* 繼承的過程中會改變基類成員的訪問屬性, 改變規則如下:

* public繼承:基類public成員,protected成員,private成員的訪問屬性在派生類中分別變成:public, protected, private

* protected繼承:基類public成員,protected成員,private成員的訪問屬性在派生類中分別變成:protected, protected, private

* private繼承:基類public成員,protected成員,private成員的訪問屬性在派生類中分別變成:private, private, private

* 也就是說從訪問許可權來講,public > protected > private, public僅可以被protected或private改變,

* protected僅可以被private改變, private不可被改變。

* 如果不顯式的使用修飾符,那麼預設為private

*/class rectangle: public shape};

/* 因為使用protected 繼承, 所以在main中無法再使用setwidth() 和 setheight()方法

* 這裡使用建構函式中呼叫這兩個方法來初始化

*/class right********: protected shape

right********()

};intmain

(void

)

引用就是某一變數(目標)的乙個別名,對引用的操作與對變數直接操作完全一樣。

引用的宣告方法:型別識別符號& 引用名=目標變數名;
說明:

引用在引數中的例項

#include

using namespace std;

/* 這裡從用法上講,引用可以理解為指標但是少去了類似*p這種繁瑣的寫法

* 實際上,不能把指標和引用混為一談,這兩者有著本質的區別

*/void

swap

(int

& x,

int& y)

int main (

)

引用在返回值中的例項

#include

using namespace std;

double vals=

;/* 需要注意,即便是引用,也無法返回區域性變數

*/double

&setvalues

(int i)

intmain

(void

)setvalues(1

)=20.23

;setvalues(3

)=70.8

;for

(int i =

0; i <

5; i++

)return0;

}

定義方式

template ....

> 返回型別 函式名(引數列表)

template ..

.> 返回型別 函式名(引數列表)

函式模板

#include

#include

using namespace std;

template

inline t const

&max

(t const

& a, t const

& b)

intmain()

類模板

#include

#include

#include

#include

#include

using namespace std;

/* * 模板類

* 其中bool empty() 後面加了const,const的含義是函式體中不修改類中的資料, 相當於傳入了 const self

* 這種用法可以用來保證某個方法不修改類中的字段,並且便於閱讀

* 其中vector本身就是乙個模板類

*/template

class stack};

/* * 在類的外部定義模板類的模板方法

*/template

void stack::

push

(t const

& elem)

template

void stack::

pop(

) elems.

pop_back()

;}/* * 宣告為const型別,表明方法內部不會修改類中的字段

*/template

t stack::

top(

)const

return elems.

back()

;}intmain()

catch (exception const

&ex)

}

C 重點知識總結 陣列

記憶體分割槽 堆 手動分配釋放,malloc,new來分配,free,delete來釋放 棧 編譯器自動分配釋放,存放函式的引數值 區域性變數的值等 全域性 靜態 儲存區 存放全域性變數和靜態變數,包括data段 全域性初始化區,存放初始化的全部變數和靜態變數 與bss段 全域性未初始化區,在程式執...

Zookeeper重點總結

zookeeper原子廣播協議,zookeeper使用zab協議,實現分布式資料一致性。具體的,zk使用乙個單一的主程序來接受並處理客戶端的事務請求,並使用zab協議,將資料的變更狀態以事務proposal的形式廣播到所有follower。leader 1,可以進行事務操作 寫操作 和非事務操作 讀...

Zookeeper重點總結

類似於一棵樹,每個znode預設能夠儲存1mb的資料 服務1啟動 首先選舉自己 服務2啟動,首先選舉自己,服務1轉投id比自己大的服務2 服務3啟動 首先選舉自己 服務1服務2轉投序號比較大的伺服器3,這時master選舉出來了 服務4啟動,這時已經選舉出來且過半不會觸發重新選舉 服務5啟動,同服務...