【问题标题】:Usage of this in C++, PHP, other languages在 C++、PHP、其他语言中使用 this
【发布时间】:2015-11-11 21:30:41
【问题描述】:

为什么 C++ 中的内部类变量可以使用this,但不是必须的,而 PHP 内部类属性必须使用$this->

示例 C++(可以使用 this,但不是必须)

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

PHP 示例(必须使用$this->

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

在 PHP 中要求 $this-> 有什么优点/缺点吗?我可以看到它毫无疑问地澄清了该变量确实属于这个特定的类实例,而不是可能是一个局部范围的变量,但是 C++ 在没有这个要求的情况下管理得很好。 . .

【问题讨论】:

  • 在C++中this是一个指向类的指针,所以如果你定义类和setHealth作为这个类的方法你可以使用this->health = h;,但是这个可以跳过
  • BTW、Perl、Python、Javascript 以及可能的其他一些脚本 语言也需要使用this(或self)。我认为它是为提高解析器速度而设计的。
  • 这里已经在一定程度上解决了这个问题:stackoverflow.com/questions/912312/…
  • 甚至一些 C++ 程序员也使用var_ 表示成员变量。它使代码更易于阅读(对于人类,即编译器不在乎)。

标签: php c++ this dynamic-typing static-typing


【解决方案1】:

C++ 具有静态类型并需要声明。编译器可以很容易地找出名称 (health) 所指的内容。

在 PHP 中,OTOH,$health = $h; 将是模棱两可的。那是局部变量还是类成员变量?请记住,您可以动态为对象添加属性,因此检查类声明的属性是不够的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2014-08-10
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2020-05-04
    相关资源
    最近更新 更多