内联函数的好处和坏处
内联函数的缺点会使得代码量激增
好处是,提高代码效率
使用时要注意一般内联函数和模板函数都需要定义在头文件。因为内联操作往往都是在编译期间完成替换的。放在头文件,才能让编译器知道用哪些代码进行替换。模板函数也是一样,在编译期间具现化的时候需要具体知道模板函数的实现,这时候如果模板函数在某个源文件里面,那只有编译这个源文件的时候才能知道并具现化。其他源文件如果也要具现化,编译器有可能找不到具体的模板函数实现。当然这个并不绝对,有的编译器更完备强大,有可能能找到。有的编译器在链接阶段进行内联,可以找到其他的o文件中的内联函数实现。
为什么定义的内联函数,但编译器有时候还是产生了这个函数实体。而不是按我们设想的内联函数,只是把函数实现拷贝到调用的地方,实际上不用产生函数实体。 内联是对编译器的建议,编译器可以实际不内联。并且当编译器发现代码实现中,如果有取用这个函数的函数指针,这种情况下,自然不能内联,要乖乖的构建出这个函数的实体上,使得通过指针可以调用这个函数。
在类定义里面定义的函数默认是内联函数。但是要避免内联构造函数和析构函数。因为这两个函数在编译器编译的时候会自动产生很多代码。如果内联的话,你以为是个短代码,但实际是个大代码的内联。
网友评论