Есть ли какие-либо затраты производительности, чтобы всегда использовать этот указатель в классе - PullRequest
0 голосов
/ 16 мая 2018

Есть ли какие-либо затраты производительности на разыменование this-> указатель или это нормально использовать.

Например: -

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

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Использование указателя this-> для разыменования, как показано, является необязательным и абсолютно не влияет на значение или сгенерированный код.

Есть люди, которые думают, что это лучше читается, и люди, которые думают, что это не так, но это единственное отличие.

Как и другие рекомендовали, в любом случае для параметра было выбрано другое имя, нежели имя члена. Компилятор поймет, что вы имеете в виду, но люди будут сталкиваться с одинаковыми именами.

0 голосов
/ 16 мая 2018

Практически наверняка нет затрат на производительность, если у вас нет особенно плохого компилятора (или интерпретатора)Стандарт C ++ прямо не говорит, что не должен быть затратами на производительность, но опять же он также воздерживается от объяснения очевидного авторам компиляторов.

this->data & c.являются просто синтаксическим сахаром для переменной-члена текущего объекта: запись data = data; в теле конструктора по сути не является операцией.Еще лучше написать

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

, где здесь компилятор может устранить неоднозначность переменных, составляющих data(data).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...