使用"this->"的性能惩罚?

2 c++

考虑一个C类中两个类似C++成员函数的示例:

void C::function(Foo new_f) {
    f = new_f;
}
Run Code Online (Sandbox Code Playgroud)

void C::function(Foo new_f) {
    this->f = new_f;
}
Run Code Online (Sandbox Code Playgroud)

这些函数是否以相同的方式编译?使用this->(更多内存访问或其他)是否有任何性能损失?

Set*_*gie 9

是的,它完全相同,你将获得相同的性能.

您真正必须使用this->语法的唯一时间是您具有与要访问的实例变量同名的函数的参数.使用变量名称本身将引用参数,因此您需要this->.当然,您也可以重命名参数.而且,正如ildjarn在评论中指出的那样,你需要this在某些情况下使用它来调用依赖的函数,因为它this是隐式依赖的(你可以阅读更多关于它的内容).

  • 还有其他需要`this->`的上下文,例如访问基类成员时类模板成员函数内部. (3认同)