C++ 在类中始终使用此指针会导致性能损失吗

C++ 在类中始终使用此指针会导致性能损失吗,c++,pointers,visual-c++,C++,Pointers,Visual C++,取消引用此->指针是否会降低性能 还是可以使用 例如:- Vertex::Vertex(int data) { this->data = data; this->visited = false; } 除非您有一个特别糟糕的编译器(或解释器),否则几乎可以肯定没有性能成本。C++标准没有明确指出不存在性能开销,但是它也避免了将明显的描述给编译器编写者。 this->data&c。只是当前对象的成员变量的语法糖:写入data=data本质上是一个no-op。更好的方法是

取消引用
此->
指针是否会降低性能 还是可以使用

例如:-

Vertex::Vertex(int data)
{
    this->data = data;
    this->visited = false;
}

除非您有一个特别糟糕的编译器(或解释器),否则几乎可以肯定没有性能成本。C++标准没有明确指出不存在性能开销,但是它也避免了将明显的描述给编译器编写者。
this->data
&c。只是当前对象的成员变量的语法糖:写入
data=data本质上是一个no-op。更好的方法是编写

Vertex::Vertex(int data) : data(data), visited(false)
{
}

在这里,编译器能够消除包含
数据(data)

的变量的歧义,使用
此->
指针进行解引用(如图所示)是可选的,并且绝对不会影响意义或生成的代码

有人认为它可读性更好,也有人认为不是,但这是唯一的区别


按照其他人的建议,无论哪种方式,都为参数选择了与成员名称不同的名称。编译器会知道您的意思,但人类会在相同的名称上绊倒。

性能成本与什么相比?只是风格问题(除非您使用依赖名称,而
此->
或限定名称是必需的,但与性能无关)。在示例代码分配中不使用
this->
data=datavisted=false)相比,code>将是noop.performance cost
此->访问=假
的意思完全相同,编译器没有理由生成不同的代码。我认为最好建议使用类成员的前缀来避免名称冲突。@VTT:我就是这么做的,但这绝不是一种普遍接受的样式。Java的家伙们似乎已经明确地朝着这个方向发展。使用前缀显然是玩“发现缺少的这个->”游戏的更好选择。@VTT:我完全同意!这还意味着我可以在没有语法高亮显示的环境(如vi)中识别成员变量……如果您的方法要求您向下滚动直到看不到参数列表,那么可能该方法太大了;)