c 函式整理

2021-06-23 02:12:22 字數 2264 閱讀 5051

函式整理

一:內聯函式

將函式指定為 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...