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啟動,同服務...