Jal*_*eri 11 c++ operators inline-method
运算符和其他方法在C++中进行内联是否有任何区别?我已经搜索过它,但这不是一个常见的问题,正如我所看到的那样.有没有人有充分的理由使用它或避免?注意:显然,我的意思是内联运算符,当它们很小时.
Jer*_*fin 14
虽然编译器之间可能会有所不同,但我希望从编译器的角度来看,运算符只是另一个具有某种不寻常名称的函数,它允许源代码的语法看起来有点不同.
尽管如此,当编译器的代码生成器部分运行时,我预计重载操作符和另一个函数(执行相同的操作)之间的任何差异都会消失.
因此,将其声明为inline或在类定义的主体内定义它将具有与任何其他函数一样多的(很少,取决于您的观点)运算符重载.我通常希望在这两种情况下效果都非常小 - 至少在启用优化时,大多数编译器都会忽略inline关键字并自行决定内联(以及不应该)扩展内容.
请注意,在某种程度上,编译器不能忽略inline关键字 - 必须遵守对"一个定义规则"的一些特殊修改,无论函数是否实际内联扩展.
您可以使用该inline关键字向编译器建议内联函数.
编译器没有义务遵守此请求.
运算符类似 - 它们可能会也可能不会内联.
由于编译器不能强制内联,因此可能没有充分的理由使用或避免使用内联提示.因为这就是全部:提示.
在Visual C++中,您可以使用__forceinline关键字强制内联,结果是更大的代码和潜在的性能损失.在精心设计的系统中,消除选项(通过强制执行)通常会导致性能下降,这种情况很常见.即使您使用此关键字,也不是每个函数都可以成功内联.
这里讨论GCC内联.
| 归档时间: |
|
| 查看次数: |
12785 次 |
| 最近记录: |