【问题标题】:Is using "this->variable" slower than using just "variable"使用“this->variable”比只使用“variable”慢
【发布时间】:2021-08-17 18:50:50
【问题描述】:

如果我有课

class newclass
{
  int length;
  int breadth;
  public:
  int area()
    {
        return this->length * this->breadth;
      }
  int area2()
    {
        return length * bredth;
       }

};

这两种方法中哪一种会更快区1或区2,应该使用哪个?

【问题讨论】:

  • 它们是相同的。
  • 你检查过装配吗? gcc.godbolt.org/z/qYr1GExjh
  • 两者在功能上是等价的,所以在运行时没有区别。编译时间的任何差异都将是特定于编译器的,但可能可以忽略不计。请注意,在某些情况下this-> 是必要的,但您的示例不是其中之一。一般来说,我不会使用this->,除非它的使用是必要的——但这纯粹是一个文体问题(避免不必要的打字)。
  • @StephenNewell 我应该首先检查一下。
  • @StephenNewell 这并不意味着什么。即使源代码不相同,一个好的优化编译器也可以去除很多无关紧要的东西。

标签: c++ class pointers variables


【解决方案1】:

编译器会将它们视为相同。如果可以帮助读者更好地阅读代码,请使用 this->variable 而不是 variable

【讨论】:

  • 谢谢,我喜欢使用 this->variable 因为有时我在函数中为 ex int setLength(int length){ this->length = length;} 的参数使用相同的名称是猜你可以说这是一种变量重载,因为我两次使用相同的变量名。
  • 我想不出一个例子,添加无关的this-> 会使代码更具可读性。
  • @Free-Man 我使用 Microsoft 的惯例,即所有成员变量都以 m_ 开头,所以我从来没有遇到过这种情况。
  • @MarkRansom 我很难想出一个添加无关的m_ 的例子。
【解决方案2】:

使用“this->variable”比只使用“variable”慢

打字比较慢。

在运行时并不慢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 2023-04-07
    • 2020-06-06
    • 2013-02-28
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    相关资源
    最近更新 更多