练习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()不是一个常量表达式。