如果 php 自动为您初始化类内的属性,是否需要将其初始化为 null?

use*_*637 5 php

对两个类中的一个对象执行 var_dump 会得到相同的结果

Class Node{
    public $parent = null;
    public $right = null;
    public $left = null;        
    function __construct($data){
        $this->data = $data;                    
    }
}

Class Node{
    public $parent;
    public $right;
    public $left;        
    function __construct($data){
        $this->data = $data;                    
    }
}
Run Code Online (Sandbox Code Playgroud)

例如

$a = new Node(2);
var_dump($a);
Run Code Online (Sandbox Code Playgroud)

对于上述任一类返回以下内容

object(Node)#1 (4) {
  ["parent"]=>
  NULL
  ["right"]=>
  NULL
  ["left"]=>
  NULL
  ["data"]=>
  int(2)
}
Run Code Online (Sandbox Code Playgroud)

对于变量来说,情况似乎并非如此。

$b;
var_dump($b);
Run Code Online (Sandbox Code Playgroud)

如果您打算将该属性的值设置为 ,null是否需要明确编写该值,因为 php 似乎会自动为您执行此操作?

另外 - 根据这个答案/sf/answers/422316331/,如果您尝试获取未初始化变量的值,C++ 会给出未定义的行为。如果类中的属性未初始化为值null,C++ 是否会像 php 那样自动设置该属性的值?

Jon*_*Jon 3

不,不需要将它们初始化null——PHP 自动执行此操作,并且您自己执行不会产生任何可观察到的差异。

C++ 不会将类字段的值设置为null(实际上 C++ 中没有“真实”null值,除非算nullptr在 C++ 11 中);它对它们进行零初始化值初始化,这是不一样的。您可以在此处阅读有关零和值初始化的信息。

  • 反对者:请发表评论帮助我改进这个答案。谢谢。 (3认同)