混淆1:把内联函数和内部类弄混了
混淆2:类的声明和实现没有分离的,难道都是内联函数吗?
内联函数避免的是调用函数的开销,实际上编译器是把它那段代码复制过来的,参考《c++程序设计》5.16
除了免除调用之外呢,还可以利用编译器的最优化机制(这个机制不能优化调用函数的代码),
但是内联函数会造成目标代码变大也就是说要占用较大的内存。因此如果一个函数比较小比较简单用内敛函数很划算,
因为调用这个函数的开销可能会比这个函数体产生体积还要大。
而且即使声明了一个函数确实是内联函数,但是在真正的执行过程中他是否被内联也是不一定的,取决我们调用的方式,直接调用没问题,用函数指针调用就无法内联。
如果一个函数是在类的声明中实现的,那么它就自动地成为一个内联函数。在下面的类A的声明中,构造函数和f1都自动的成为内联函数,而f2是一个普通函数。
class A
{
public:
A()
{
//do something;
}
double f1()
{
//returns a number;
}
double f2();
};
或者 在类的实现中用inline关键字标明这个函数是内联函数。如:
inline double A::f2()
{
//return a number;
}