練習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()不是一個常量表達式。