2016.10.22(更新到p93)
1.關鍵字typename:
在模板類template
class myclass{
typename t:: subtype *ptr;
這裡,對於t型別的子型別subtype,如果要定義其指標,必須在前面新增typename」,否則,sbutype會被當做乙個static成員,於是
t::subtype *ptr 會被解釋為形別t內的數值subtype 與ptr的乘積。
typename還可以這樣用:template
2.成員模板
成員,也可以是乙個模板類。但這樣的成員模板既不能是virture,也不能有預設引數。
例如:class myclass{
template
void f(t);
最常用的功能是為template classes 中的成員提供乙個自動形別轉換。
如果這麼定義assign函式:
private:
t value;
public:
void assign&x){
value=x.value;
這樣的做法就會出錯:
myclassa;
myclassb;
a.assign(b);//error,原因:b的value型別不是a的value型別(引數型別不匹配)
修改方式:
template
class myclass {
private:
t value;
public:
template //成員函式也可以是乙個類模板
void assign(const myclass&x){//assign的引數可以是乙個新的型別
value=x.get_value();//這時候不能用x.value訪問,因為x是乙個新的型別x類,不同類的私有成員是封裝起來的
t get_value(){
return value;
void f(){
myclassa;
myclassb;
a.assign(b);//success
3.命名空間namespace(p16)
c 標準庫 ctime學習
計時clocks per sec 每秒時鐘週期數的表示式。會員 型別含義 範圍tm sec int一分鐘後 0 60 tm min int一小時後的幾分鐘 0 59 tm hour int午夜時分 0 23 tm mday int這個月的某一天 1 31 tm mon int幾個月以來 0 11 t...
C 標準模板庫(STL 學習記錄 Part2
queuename 佇列本身就是一種先進先出的限制性資料結構,因此只能通過 q.front 和 q.back 來訪問隊首 隊尾元素,時間複雜度為o 1 1 push x 將x進行入隊 2 front 和 back 分別獲得隊首 隊尾元素 3 pop 令隊首出隊 4 empty 檢測queue是否為空...
C C 學習記錄 標準庫標頭檔案stdlib h
小結 1.字串轉換,常見於主函式傳參,如 atoi 2.隨機函式,如 srand,rand 3.記憶體操作,如 malloc,free,但是注意!memset,memcpy等操作是在標頭檔案string.h中 4.環境介面,如 exit 5.abs 以下是詳細 1 字串轉換 double atof ...