9.3 带内联函数的Stash和Stack
引入了内联函数,现在,可以把Stash和Stack类变得更有效。
很明显,小函数作为内联函数工作是理想的,但要注意:两个最大的函数仍旧保留为非内联函数,因为要是把它们作为内联使用的话,很可能在性能上得不到什么改善。
测试程序再一次表明一切都正常运行。
这个程序同上面的测试程序相同,所以输出结果也基本一样。
Stack类更好地使用了内联函数。
注意:Link析构函数在前面的Stack版本中是以空的形式出现的,而在这里被删除了。在pop()中,表达式delete oldHead只是释放Link使用过的内存(它不销毁Link所指向的data对象)。
多数内联函数十分精细和明显,特别是对于Link尤其如此。甚至把pop()作为内联函数看起来也是合理的,尽管条件表达式或者局部变量对于使用内联函数的好处不明显。这里,函数很小,可以使用内联函数提高效率而无负面影响。
如果所有的函数都是内联函数,那么使用库就会变得相当简单,因为就像在上面的测试程序中所看到的一样,不需要进行库连接(注意并没有Stack4.cpp)。
有时创建的类都是内联成员函数时,可以把整个类放在头文件中(我在本书中就跨越了这条界线),在程序开发的过程中,这是有益的,尽管编译时可能会花费更多的编译时间。一旦程序稍微稳定后,就可以返回去,在适当的地方把函数改为非成员函数。