我试图完全理解内联的内容,但是当涉及到构造函数时我感到困惑。到目前为止,我理解内联函数会将函数放在它所调用的位置:
class X {
public:
X() {}
inline void Y() { std::cout << "hello" << std::endl; }
};
int main() {
X x;
x.Y; //so instead of this it will be: "std::cout << "hello" << std::endl;"
}
但这会做什么(如何取代?):
class X {
public:
//or inline if the compilers feeling friendly for this example
__forceinline X() {}
}
答案 0 :(得分:3)
inline
的含义只是告知编译器将在此翻译中以及可能的其他翻译单元中定义有问题的结尾。编译器将此信息用于两个目的:
关于内联函数的类型没有区别。也就是说,它是构造函数,成员函数,正常函数等等。
顺便说一句,在类定义中定义的成员函数是隐式声明的inline
。没有必要明确提及它。 __forecedinline
似乎是一个编译器扩展,假设它做了它所说的可能是一个坏主意,因为编译器在决定应该内联的内容方面要比人类好得多。