函式整理
一:內聯函式
將函式指定為 inline 函式,(通常)就是將它在程式中每個呼叫點上「內聯地」展開
例:const string &shorterstring(const string &s1, const string &s2)
假設我們將 shorterstring 定義為內聯函式
cout << shorterstring(s1, s2) << endl;
在編譯時將展開為:
cout << (s1.size() < s2.size() ? s1 : s2)<< endl;
inline const string &shorterstring(const string &s1, const string &s2)
一般來說,內聯機制適用於優化小的、只有幾行的而且經常被呼叫的函式
二:過載函式
void print(const string &);
void print(double);
void print(int);
void foobar2(int ival)
三:const 使用
bool sales_item::same_isbn(const sales_item &rhs) const
bool sales_item::same_isbn(const sales_item *const this,const sales_item &rhs) const
total.same_isbn(trans);
const 改變了隱含的 this 形參的型別,在呼叫total.same_isbn(trans) 時,隱含的 this 形參將是乙個指向 total 物件的const sales_item* 型別的指標
用這種方式使用 const 的函式稱為常量成員函式。由於 this 是指向 const 物件的指標,const 成員函式不能修改呼叫該函式的物件。因此,函式 same_isbn 只能讀取而不能修改呼叫它們的物件的資料成員。
const 物件、指向 const 物件的指標或引用只能用於呼叫其const 成員函式,如果嘗試用它們來呼叫非 const 成員函式,則是錯誤的。
四:建構函式
class sales_item
private:
std::string isbn;
unsigned units_sold;
double revenue;
};在冒號和花括號之間的**稱為建構函式的初始化列表
五:函式指標
1.函式指標是指指向函式而非指向物件的指標
定義:bool (*pf)(const string &, const string &);
typedef:typedef bool (*cmpfcn)(const string &, const string &);
使用:假設有函式
bool lengthcompare(const string &, const string &);
cmpfcn pf1 = 0;
pf1 = lengthcompare;
cmpfcn pf2 = lengthcompare;
2.函式指標形參
函式的形參可以是指向函式的指標,這種形參可以用以下兩種形式編寫
void usebigger(const string &, const string &,bool(const string &, const string &));
void usebigger(const string &, const string &,bool (*)(const string &, const string &));
3.返回指向函式的指標
int (*ff(int))(int*, int);
要理解該宣告的含義,首先觀察:
ff(int)
將 ff 宣告為乙個函式,它帶有乙個 int 型的形參。該函式返回
int (*)(int*, int);
它是乙個指向函式的指標,所指向的函式返回 int 型並帶有兩個分別是int* 型和 int 型的形參。
使用 typedef 可使該定義更簡明易懂:
typedef int (*pf)(int*, int);
pf ff(int);
4.指向過載函式的指標
extern void ff(vector);
extern void ff(unsigned int);
指標的型別必須與過載函式的乙個版本精確匹配
void (*pf1)(unsigned int) = &ff;
c 整理 函式過載
什麼是函式過載?為什麼c語言不支援函式過載,而c 能支援函式過載?解析 函式過載是用來描述同名函式具有相同或者相似的功能,但資料型別或者是引數不同的函式管理操作。在c語言裡需要寫兩個不同名稱的函式來進行區分。include using namespace std class test float a...
c 整理 虛函式
解析 簡單的說,虛函式是通過虛函式表實現的,那麼什麼是虛函式表呢?事實上,如果乙個類中含有虛函式表,則系統會為這個類分配乙個指標成員指向一張虛函式表 vtbl 表中每一項指向乙個虛函式的位址,實際上就是乙個函式指標的陣列。為了說明虛函式表,請看程式 class parent virtual void...
C 常用函式整理
記錄一些遇到的c 操作,作為個人筆記,便於查閱 1.memset 解釋 原型 常用形式 memset a src,0,sizeof a src 將陣列記憶體空間初始化,全部置為02.set 解釋 set的特性是,所有元素都會根據元素的鍵值自動排序,set的元素不像map那樣可以同時擁有實值 valu...