9.3 带内联函数的Stash和Stack

引入了内联函数,现在,可以把Stash和Stack类变得更有效。

9.3 带内联函数的Stash和Stack - 图1

9.3 带内联函数的Stash和Stack - 图2

很明显,小函数作为内联函数工作是理想的,但要注意:两个最大的函数仍旧保留为非内联函数,因为要是把它们作为内联使用的话,很可能在性能上得不到什么改善。

9.3 带内联函数的Stash和Stack - 图3

测试程序再一次表明一切都正常运行。

9.3 带内联函数的Stash和Stack - 图4

9.3 带内联函数的Stash和Stack - 图5

这个程序同上面的测试程序相同,所以输出结果也基本一样。

Stack类更好地使用了内联函数。

9.3 带内联函数的Stash和Stack - 图6

注意:Link析构函数在前面的Stack版本中是以空的形式出现的,而在这里被删除了。在pop()中,表达式delete oldHead只是释放Link使用过的内存(它不销毁Link所指向的data对象)。

多数内联函数十分精细和明显,特别是对于Link尤其如此。甚至把pop()作为内联函数看起来也是合理的,尽管条件表达式或者局部变量对于使用内联函数的好处不明显。这里,函数很小,可以使用内联函数提高效率而无负面影响。

如果所有的函数都是内联函数,那么使用库就会变得相当简单,因为就像在上面的测试程序中所看到的一样,不需要进行库连接(注意并没有Stack4.cpp)。

9.3 带内联函数的Stash和Stack - 图7

有时创建的类都是内联成员函数时,可以把整个类放在头文件中(我在本书中就跨越了这条界线),在程序开发的过程中,这是有益的,尽管编译时可能会花费更多的编译时间。一旦程序稍微稳定后,就可以返回去,在适当的地方把函数改为非成员函数。