【发布时间】:2013-02-02 17:16:40
【问题描述】:
我是一名 Java 程序员,目前正在阅读有关设计模式的 GoF 书籍,其中的示例以 C++ 和 Smalltalk 语法给出。我在 C++ 中遇到了一种特殊的语法,我发现它被称为 member initialization list 。从给出的答案看来,使用成员初始化列表似乎比使用成员变量赋值是一种好习惯(效率更高)。Java中有类似的东西吗?如果不是,那么 Java 设计者没有加入这个特性应该是有充分理由的。您对此有何看法?
【问题讨论】:
-
我对Java的理解非常有限,如果我说的不对,请大家指正:在Java中,成员变量要么是引用,复制起来很便宜,要么是简单的数据类型,比如int和 double,复制起来也很便宜。因此,默认情况下初始化一个变量,然后为它分配一个新值,你不会损失太多。而在 C++ 中,对象可能具有非常昂贵的默认初始化。而且,如果您只是要覆盖旧值,那么默认初始化是一种巨大的浪费。
-
另外,C++中有些对象不能默认初始化,在这种情况下初始化列表是必须的。
-
这个问题在这里得到了详细解答:stackoverflow.com/questions/7154654/…
标签: java c++ language-design