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->
的开销。围绕名称阴影工作与此无关。