第六章 6.5.2節練習

練習6.43

你會把下面的哪個聲明和定義放在頭文件中?哪個放在源文件中?爲什麼?

(a) inline bool eq(const BigInt&, const BigInt&){...}

(b) void  putValues(int *arr, int size);

解答:

函數聲明和內聯函數都適合放在頭文件中。所以,這兩條語句我都會放在頭文件中。

內聯函數其實是直接在調用處展開的,可能會被很多地方用到。

函數聲明頁是一樣,同樣的原因。


練習6.44

將6.2.2節(189頁)的isShorter函數改寫成內聯函數。

解答:

只需要在返回類型之前添加inline關鍵字即可。


練習6.45

回顧在前面的練習中你編寫的那些函數,他們應該是內聯函數嗎?如果是,將他們改寫成內聯的函數;如果不是,說明原因。

解答:

這裏有個原則inline函數需要短小,一般超過30行的函數,我就不會將其定義成inline函數。


練習6.46

能把isShorter函數定義成constexpr函數嗎?如果能,將他們改寫成constexpr函數;如果不能,說明原因。

解答:

應該不能,因爲str1.size() <str2.size()不是一個常量表達式。

發佈了221 篇原創文章 · 獲贊 28 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章