2 回答

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
調(diào)用函數(shù)比求解等價(jià)的表達(dá)式要慢得多,在大多數(shù)的機(jī)器,調(diào)用函數(shù)要做很多的工作,要先保存寄存器,并在返回時(shí)恢復(fù),程序還需要轉(zhuǎn)向一個(gè)新位置執(zhí)行
內(nèi)聯(lián)函數(shù)可以避免函數(shù)調(diào)用的開(kāi)銷(xiāo)
在一個(gè)函數(shù)前面加inline 將其指定為內(nèi)聯(lián)函數(shù)
inline 內(nèi)斂說(shuō)明對(duì)編譯器只是一個(gè)建議 編譯器可以選擇忽略這個(gè)建議
類(lèi)的例子
class Screen{
public:
typedef std::string::size_type =index;
char get() const{return contents[cursor];} //在類(lèi)聲明定義的函數(shù)就是內(nèi)聯(lián)的
inline char get(index ht, index wd)const; //顯示聲明為內(nèi)聯(lián) 將在類(lèi)外定義
index get_cursor() const;
//........
}
//類(lèi)聲明中聲明的內(nèi)聯(lián) 不用再加內(nèi)聯(lián)
char Screen:get(index r ,index c) const
{.......}
//定義中說(shuō)明為內(nèi)聯(lián) 在聲明中沒(méi)有
line Screen::index Screen::get_cursor() const
{.......}
在聲明和定義處指定內(nèi)聯(lián)inline 都是合法的 在類(lèi)外部定義inline的一個(gè)好處是使得類(lèi)容易閱讀
而且你發(fā)布這個(gè)類(lèi)時(shí) 只需提供hpp文件和dll 可以起到隱藏你的實(shí)現(xiàn)的作用

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
可以不分開(kāi)。
分開(kāi)的目的一般是為了將聲明(包括注釋?zhuān)┓旁谝粔K(比如頭文件里),這樣當(dāng)你需要查閱某個(gè)函數(shù)的功能時(shí)可以直接在這一塊里查找,比較方便。
當(dāng)然,還有一些情況必須要分開(kāi),比如兩個(gè)函數(shù)交叉調(diào)用:
int i = 10;
void foo();
void bar();
void foo() {if (i > 0) {--i,bar();}}
void bar() {foo();}
這種情況如果不分開(kāi)的話(huà)無(wú)論哪個(gè)函數(shù)放在前面都不行。
- 2 回答
- 0 關(guān)注
- 156 瀏覽
添加回答
舉報(bào)