很长一段时间我一直在使用javascript,其中this
关键字是必需的.现在,我用c ++编程,但习惯使用this
关键字仍然存在.但真正的问题是 - 使用this
关键字是否会对性能产生负面影响(如不必要的内存访问)?我的意思是 - 代码省略this
了对编译器更友好的优化,或者它完全无关紧要?因为理论上严格来说,指的this
是指代指针,就像opcode $reg0, [$reg1]
汇编程序一样,它可以在代码中添加一个更多的内存引用,但我想它应该由编译器以比典型指针更聪明的方式处理,我是对的吗?
我个人更喜欢使用,this
因为我感觉有点迷失代码而不使用它,因为我不知道某些变量是成员还是本地或全局或什么,但如果它导致性能问题我可能强迫自己避免它.
不,优化编译器(对于C++ 11或更高版本)很可能为for 和for 生成相同的二进制代码,同样也为和.this->field
field
this->memberfun(2,3)
memberfun(2,3)
(可能,即使没有优化,也会产生相同的效率代码;但我不确定)
有时(特别是在编码模板时)this
是必需的,因为省略它有不同的含义(我忘了哪些奇怪的情况).
当然,编译时间可能略有不同.但你不应该在意.
this
出于可读性原因,一些编码约定需要或(更常见地)相反禁止使用.选择你喜欢的任何约定,但要保持一致.
另请参阅此答案,解释this
在Linux x86-64 ABI上如何实际处理.