inline成员函数的有关问题
inline成员函数的问题
1. 对于类里实现的函数,是否都是inline?
比如代码过长,循环次数过多?
2.
类外实现的inline函数,在类里申明的时候,inline是否必须?
------解决方案--------------------
隐式内联或显示内联只是告诉编译器尽量内联,不是强制要求
------解决方案--------------------
1. 如果没有声明函数是inline,则不会默认类函数时内联函数
2. 需要关键字inline
其实,内联 对于编译器来说只是一个建议,编译器可以选择忽略这个建议。
------解决方案--------------------
成员函数定义在类定义内部的,都默认加了 inline 关键字。
类里只给声明,外部实现定义的时候,必须显示的加 inline 关键字。
inline 只是建议,不是强制,最终是否 inline 由编译器说了算。
现代编译器很先进,你不加 inline,经编译器分析都认为能 inline 也自动 inline 了;你加了 inline,编译器认为不适合 inline 的也不会 inline。因此 inline 有些鸡肋了。
inline 函数即便在不同编译单元有多份定义,标准也要求视同只有一份,不允许链接器对这种情况报错。
1. 对于类里实现的函数,是否都是inline?
比如代码过长,循环次数过多?
2.
类外实现的inline函数,在类里申明的时候,inline是否必须?
------解决方案--------------------
隐式内联或显示内联只是告诉编译器尽量内联,不是强制要求
------解决方案--------------------
1. 如果没有声明函数是inline,则不会默认类函数时内联函数
2. 需要关键字inline
其实,内联 对于编译器来说只是一个建议,编译器可以选择忽略这个建议。
------解决方案--------------------
成员函数定义在类定义内部的,都默认加了 inline 关键字。
类里只给声明,外部实现定义的时候,必须显示的加 inline 关键字。
inline 只是建议,不是强制,最终是否 inline 由编译器说了算。
现代编译器很先进,你不加 inline,经编译器分析都认为能 inline 也自动 inline 了;你加了 inline,编译器认为不适合 inline 的也不会 inline。因此 inline 有些鸡肋了。
inline 函数即便在不同编译单元有多份定义,标准也要求视同只有一份,不允许链接器对这种情况报错。