我读到inline
充其量只是一个提示,编译器可能会内联或可能不会内联已声明为inline
的成员函数,并且它也可能内联函数在编译时不会被内联或链接时间。
如果这是真的,那么两者之间是否有任何区别:
在“ myClass.h”中:
class cls {
public:
result_t fc(typeA a, typeB b);
result_t fc(typeC c, typeB b);
...
}
inline result_t cls::fc(typeC c, typeB b) {
return fc(c.getA(), b);
}
和
class cls {
public:
result_t cls::fc(typeA a, typeB b);
result_t cls::fc(typeC a, typeB b) { return fc(c.getA(), b); } // note: not 'inline'
}
编辑:感谢@EmileVrijdags提供了出色的链接,该链接(为我澄清了)为什么声明中的定义默认情况下必须为inline
:如果没有,则将有多个定义(即,每个定义以及包含头文件的每个位置)