C++ 使用此->;用于访问成员?

C++ 使用此->;用于访问成员?,c++,performance,this,C++,Performance,This,访问某个类的成员时,我可以使用,例如: this->myVar = 10 或者我可以写: myVar = 10 我喜欢使用this->,因为它明确声明变量是此类的一个成员,但是与仅使用变量名本身相比,它会导致任何开销吗 作为替代方案,我可能会为vars添加一个唯一的前缀,例如\u TmyVar,但我已经使用这个->很久了,所以我只是想知道。没有开销。编译器将为两个版本生成完全相同的代码。这两行代码具有相同的含义。this->隐含在第二行中。他们做完全相同的事情 因此,它们的性能也完全

访问某个类的成员时,我可以使用,例如:

this->myVar = 10 
或者我可以写:

myVar = 10
我喜欢使用
this->
,因为它明确声明变量是此类的一个成员,但是与仅使用变量名本身相比,它会导致任何开销吗


作为替代方案,我可能会为vars添加一个唯一的前缀,例如
\u TmyVar
,但我已经使用
这个->
很久了,所以我只是想知道。

没有开销。编译器将为两个版本生成完全相同的代码。

这两行代码具有相同的含义。
this->
隐含在第二行中。他们做完全相同的事情


因此,它们的性能也完全相同:-)

意义上没有区别(除非有多个名称
myVar
可见,在这种情况下,普通版本可能表示函数局部变量,而
this->myVar
表示成员)。所以是的,这只是风格的问题

我喜欢用这个->因为它 显式声明变量 是这个类的成员,但它是吗 发生任何与之相比的开销 仅使用变量名 本身

是的,它是写的更多,而且更多的是阅读,并且向代码的读者表明它是由不熟悉C++的人编写的,所以他们必须在额外的时间上仔细检查所有的东西。所有这些都是程序员的开销。这需要钱

然而,并没有通常不花费任何费用的开销,即生成的机器代码的效率

总的来说,有昂贵的开销,没有便宜/免费的开销

作为替代,我可以添加一个 变量的唯一前缀,例如 _TmyVar,但是我已经使用这个->很长时间了,所以我只是想知道

表单名
\u TmyVar
,以下划线开头,后跟大写字母,保留用于实现

不要那样做

非静态数据成员最常用的C++命名约定是:代码> MyVa<代码>(前缀<代码>我的<代码>)和<代码> VARY<<代码>(后缀<代码> <代码> >


Cheers&hth.,

我有时在setter中使用显式this->,因为它们允许我对参数名称使用与实例字段相同的名称:

class MyClass 
{
    int foo;
    void setFoo(int foo) 
    {
        this->foo = foo;
    }
}
然而,在构造函数中,我通常使用初始化列表,它不需要显式this->

class MyClass 
{
    int foo;
    MyClass(int foo) : 
        foo(foo) 
    { 
    }
}

使用此->而不是前缀的一个优点是,IDE可能会为您提供更好的类成员排序列表。实际上我很喜欢这个->前缀。没有办法更好地表明它是类成员。但我不会为函数调用这样做。@frast不要使代码适应糟糕的工具,程序员更重要。参见Charles Petzold的文章。注:Charles Petzold=微软“编程Windows”的作者,这是一本关于Windows编程的经典书籍。干杯,好文章。我喜欢现代IDE的附加服务。他们让我更快。有这么多的API,我不想记住所有的标识符。眼睛也更容易忽略所有前缀和后缀的内容。好的标识符总是更好的。考虑一种新的编码风格。例如,如果您将成员变量命名为
myVar
(带有尾随的下栏),则无需使用
this->myVar
来表示
myVar
是一个成员的事实。问题是关于使用
this->
的开销。围绕名称阴影工作与此无关。