區域性變數不能作為預設實參。
作為預設實參的名字在函式宣告所在的作用於內解析,而這些名字的求值過程發生在函式呼叫時:
sz wd = 80;
char def = '';
sz ht();
string screen(sz = ht(), sz = wd, char = def);
string window = screen(); //呼叫screen(ht,80,'')
用作預設實參的名字在函式宣告所在的作用域內解析,而這些名字的求值過程發生在函式呼叫時:
void f2()
將函式指定為內聯函式(inline),通常就是將它在每個呼叫點上「內聯地」展開。假設我們把shorterstring函式定義為內聯函式,則如下呼叫
cout<《將在編譯過程中展開成類似於下面的形式
cout<<(s1.size().size()?s1:s2)<;
從而消除了shorterstring函式的執行時呼叫開銷。在shorterstring函式的返回型別前面加上關鍵字inline,這樣就可以將它宣告成內聯函式了:
inline
const
string & shorterstring(const
string &s1, const
string &s2)
函式指標指向的是函式而非物件。和其他指標一樣,函式指標指向某種特定的型別。函式的型別由它的返回型別和形參共同決定,與函式名無關。例如:
//比較兩個string物件的長度
bool lengthcompare(const
string &, const
string &);
想要宣告乙個可以指向函式的指標,只需要用指標替換函式名即可:
bool (*pf)(const
string &, const
string &);//未初始化
我們把函式名作為乙個值使用時,該函式自動地轉換成指標。例如,按照如下形式我們可以將lengthcompare的位址賦給pf:
pf = lengthcompare; //pf指向名為lengthcompare的函式
使用時也可直接使用,無須提前解引用指標:
bool b1 = pf("hello","goodbye"); //呼叫lengthcompare
bool b2 = (*pf)("hello","goodbye"); //乙個等價呼叫
bool b3 = lengthcompare("hello","goodbye"); //另乙個等價呼叫
C 指標函式和函式指標
1 指標函式 1 基本概念 指標函式 顧名思義就是帶有指標的函式,即其本質是乙個函式,只不過這種函式返回的是乙個對應型別的位址。2 定義式 type func type type 如 int max int x,int y 3 例子詳解 cpp view plain copy 1.include 2...
c 指標函式和函式指標
函式指標與指標函式 1 函式指標 形式 返回型別 函式名 參數列 一種特殊的指標,它指向函式的入口 定義乙個函式指標p,只能指向返回值為int,形參為兩個int的函式 輸出結果 include stdafx.h include using namespace std int p int,int in...
C 函式指標與指標函式
函式指標 函式名本身代表著函式的位址,因此給函數指標賦值使可以不用加 符號 加也可以!void func int 定義乙個函式 void pf int 定義乙個函式指標 pf func 給函式指標賦值 int f x,y 其中x,y是形式引數,f是函式名,呼叫後返回乙個指向整型資料的位址指標。f x...