繁体   English   中英

类/结构中的内联语句

[英]Inline statement in classes/structs

最近,我在头文件中遇到了inline -statement的两种用法:

(1)

class A {
  public:
    inline A() {
     // ...
    }
};

(2)

class A {
  public:
    inline A();
};

inline A::A() {
  // ...
}

例如(1)我听说使用inline是很好的样式。 关于(2),我不确定如果使用inline是否会更改任何内容。 因此,在任何情况下都使用inline是否是好的样式,会影响编译?

在第一种情况下,不需要inline ,因为已经与类成员同时定义并声明了代码,因此内联了代码。

inline意思是每个翻译单元将获得自己的方法版本,而不会干扰链接。

在没有inline的第二个示例中,由于一个翻译单位不遵守一个定义规则,因此您将收到一个链接器错误:该方法在类内部声明,但在外部定义,这对于编译器是不够的,您必须明确指定每个翻译单元将获得其自己的方法副本(以后无论如何都会对其进行优化)。

请注意,这些注意事项未应用于直接用其主体替换在调用站点上对其调用的方法的内联含义,这是优化编译器的职责,它会照顾好它,您不应该费心暗示它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM