关于结构成员函数的 C++ 问题。
除了名称之外,f1()
和 f2()
之间有什么区别?
struct F{
int f1(){
return 0;
}
int f2();
};
int F::f2(){
return 0;
}
我可以说 f1()
是内联的但 f2()
不是吗?
最佳答案
f1
是内联而 f2
不是内联是正确的,但它不只是因为它是在类内部定义的。 f2
如果定义为
inline int F::f2() {
return 0;
}
C++11 规范第 9.3 节说 f1
是“在其类定义中定义的”,而 f2
是“在其类定义之外定义的”。然后它声明在其类定义内定义的任何函数都是内联的,而在其类定义之外定义的函数必须明确标记为内联(如我上面的示例),否则它们是非内联的(如您的 f2
)。
类定义内部与定义外部并不重要,除了使函数隐式内联。类定义内部和类定义外部的概念仅出现在 9.3.2-9.3.5 中,而“内联”的更广泛概念出现在规范的其他部分。
关于如果 C++ 结构成员函数定义在结构体之外定义,它们会有差异吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18752944/