2 回答

TA貢獻1824條經(jīng)驗 獲得超5個贊
可以不分開。
分開的目的一般是為了將聲明(包括注釋)放在一塊(比如頭文件里),這樣當你需要查閱某個函數(shù)的功能時可以直接在這一塊里查找,比較方便。
當然,還有一些情況必須要分開,比如兩個函數(shù)交叉調(diào)用:
int i = 10;
void foo();
void bar();
void foo() {if (i > 0) {--i,bar();}}
void bar() {foo();}
這種情況如果不分開的話無論哪個函數(shù)放在前面都不行。

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