类/结构中的内联语句
Inline statement in classes/structs
最近,我在头文件中遇到了inline
-语句的两种用法:
(1)
class A {
public:
inline A() {
// ...
}
};
(二)
class A {
public:
inline A();
};
inline A::A() {
// ...
}
例如(1)我听说使用inline
是很好的风格。关于(2)我不确定如果使用inline
是否会改变任何东西。那么,在任何一种情况下使用inline
都是好的风格吗,它会影响编译吗?
在第一种情况下inline
不需要,因为代码已经内联,与类成员同时定义和声明。
对于inline
,我的意思是每个翻译单元都将获得自己的方法版本,该方法不会干扰链接。
在没有inline
的第二个示例中,您将收到链接器错误,因为翻译单元不遵守一个定义规则:该方法在类内部声明,但在类外部定义,这对于编译器来说是不够的,您必须显式指定每个翻译单元将获得自己的方法副本(无论如何稍后将进行优化)。
请注意,这些注意事项不适用于内联含义,意思是省略直接用其主体替换其在调用站点的调用的方法,这是优化编译器的职责,它将处理它,你不应该费心暗示它。
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 结构声明中的 if 语句C++
- 我的"if"语句中只有一个给出了准确的值,即使它们都是相同的结构
- 为什么结构化绑定禁用RVO和移动返回语句
- 是否可以将结构与条件语句完全相同的字符串转换为可以读取和操作的语句?
- 不能在if语句之外访问c++结构
- 类/结构中的内联语句
- 使用 "if" 语句更改结构变量C++
- 计算没有If/While/For语句或任何数据结构的更改
- 可视C++:开关语句中的结构成员
- 如何使用结构体作为条件语句的操作数
- c++中重复结构中的for语句替换为while语句
- 我如何用等价的结构化语句替换continue和goto语句
- 在for循环初始化语句中声明未命名结构体
- 比较if语句中结构体内部的值