use*_*472 3 c++ struct inline member
关于struct成员函数的C++问题.
是什么区别f1()和f2()除了自己的名字?
struct F{
int f1(){
return 0;
}
int f2();
};
int F::f2(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我可以说f1()是内联但f2()不是吗?
Cor*_*ica 10
你是正确f1的内联而f2不是,但它不仅仅是因为它是在类中定义的.f2如果被定义为,也可以是内联的
inline int F::f2() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
C++ 11规范第9.3节说f1"在其类定义中定义",f2并且" 在其类定义之外定义".然后它声明在其类定义中定义的任何函数都是内联的,而在其类定义之外定义的函数必须明确标记为内联(如上例中所示),否则它们是非内联的(如您的f2).
除了使函数隐式内联之外,在类定义内部与定义之外的定义并不重要.类定义内部和类定义之外的概念仅出现在9.3.2-9.3.5中,而"内联"的更广泛概念出现在规范的其他部分中.