毫无疑问,内联析构函数可能时程序代码膨胀的一个源泉,因为它被插入到函数中的每个退出点,以析构每一个活动的局部类对象。例如,在如下代码段中:
Account acct ( “Tina Lee” );
int swt;
// ...
switch( swt ) {
case 0:
return;
case 1:
// 进行操作
return;
case 2:
// 进行其他操作
return;
// 等等
}
在每个 return语句之前,析构函数都必须被内联地展开,在 Account 类的析构函数的情况下,由于它的长度较小,所以多次展开的相关开销也较小。但是 如果已经发现它确实是一个问题,则解决方案是:或者把析构函数声明为非内联的,或者重新改写程序代码。一种可能的重写方案是在每个case 标签中用 break语句代替return语句,然后在 switch 语句后面引入一 个 return语句:
// 重写来提供一个返回点
switch( swt ) {
case 0:
break;
case 1:
// 进行操作
break;
case 2:
// 进行另一些操作
break;
// 等等
}
// 单个返回点
return;