9.4.3 在构造函数和析构函数里隐藏行为
在构造函数和析构函数中,可能易于认为内联的作用比它实际上更有效。构造函数和析构函数都可能隐藏行为,因为类可以包含子对象,子对象的构造函数和析构函数必须被调用。这些子对象可能是成员对象,或可能由于继承(继承将在第14章中介绍)而存在。下面是一个带成员对象的例子。
Member的构造函数对于内联是足够简单的,它不做什么特别的事情。没有继承和成员对象会引起额外隐藏行为。但是在类WithMembers里,内联的构造函数和析构函数看起来似乎很直接和简单,但其实很复杂。成员对象q、r和s的构造函数和析构函数将被自动调用,这些构造函数和析构函数也是内联的,所以它们和普通的成员函数的差别是非常显著的。这并不是意味着应该使构造函数和析构函数定义为非内联的,只是在一些特定的情况下,这样做才是合理的。一般说来,快速地写代码来建立一个程序的初始“轮廓”时,使用内联函数经常是便利的。但假如要考虑效率,内联是值得注意的一个问题。