关于结构成员函数的C++问题。
除了名字以外,f1()
和f2()
有什么区别?
struct F{
int f1(){
return 0;
}
int f2();
};
int F::f2(){
return 0;
}
我可以说f1()
是内联的,但f2()
不是吗?
发布于 2013-09-11 15:33:12
正确的是,f1
是内联的,而f2
不是内联的,但它不是--只是--因为它是在类中定义的。如果将f2
定义为
inline int F::f2() {
return 0;
}
C++11规范第9.3节指出,f1
是“在其类定义中定义的”,而f2
是“在其类定义之外定义的”。然后,它声明在其类定义中定义的任何函数都是内联的,而在其类定义之外定义的函数必须显式地标记为内联(如上面的示例所示),否则它们是非内联的(如您的f2
)。
除了将函数隐式内联外,类定义内与定义外的关系并不重要。类定义内部和类定义外部的概念只出现在9.3.2-9.3.5中,而更广泛的“内联”概念出现在规范的其他部分。
https://stackoverflow.com/questions/18752944
复制相似问题