2015-11-11 3 views
0

Почему внутренние переменные класса на C++ используют this, но не нужно, в то время как внутренние свойства класса PHP должен использовать $this->?Использование этого в C++, PHP, других языках

Пример C++ (можно использовать this, но не должен)

void setHealth(int h) 
{ 
    health = h; 
} 

Пример PHP (необходимо использовать $this->)

public function setHealth($h) 
{ 
    $this->health = $h; 
} 

Есть ли какие-либо плюсы/минусы требует $this-> в PHP ? Я вижу, что он не вызывает сомнений в том, что переменная принадлежит к этому конкретному экземпляру класса, противоположному, возможно, являющейся локальной облачной переменной, но C++ отлично справляется без этого требования. , ,

+0

В C++ 'this' является указателем на класс, поэтому, если вы определяете класс и' setHealth' как метод этого класса, вы можете использовать 'this-> health = h;', но это может быть пропущено – VolAnd

+0

BTW, Perl , Python, Javascript и, возможно, некоторые другие языки * для сценариев * также имеют требование использовать 'this' (или' self'). Я думаю, что это было сделано для скорости парсера. – vladon

+0

Это в некоторой степени адресовано: http://stackoverflow.com/questions/912312/why-is-the-usage-of-this-in-php-necessary-when-referencing-methods-or-variables – Dracony

ответ

8

C++ имеет статическую типизацию и требует деклараций. Компилятор может легко определить, что означает имя (health).

В PHP, OTOH, $health = $h; будет неоднозначным. Является ли это локальной переменной или переменной-членом класса? Помните, что вы можете добавлять свойства к объектам «на лету», поэтому проверить, какие свойства объявляет класс, недостаточно.

 Смежные вопросы

  • Нет связанных вопросов^_^