6.43:你会把下面的哪个声明和定义放在头文件中?哪个放在源文件中?为什么?
(a)inline bool eq(const BigInt& , const BigInt&) {...}
(b)void putValues(int *arr , int size);
Ans:把(a)的声明和定义放在头文件中,把(b)的声明放在头文件,其定义放在源文件。因为(a)是内联函数,应该把声明和定义放在头文件。
6.45:回顾在前面的练习中你编写的哪些函数,它们应该是内联函数吗?如果是,将它们改写成内联函数;如果不是,说明原因。
Ans:某些函数要经常调用,并且函数相对简单,就将其定义成内联函数,可以减小函数调用开销。而有些函数相对繁琐,例如递归函数,尽管有的可能要经常调用。
6.46:能把isshorter函数定义成constexpr函数吗?如果能,把它改写成constexpr函数;如果不能,请说明原因。
Ans:不能。虽然isshorter函数只有一条return语句,但是其return后面调用了string标准库的size()和>比较运算符,无法构成常量表达式。