【发布时间】:2014-05-12 12:08:54
【问题描述】:
我发现这个样板代码经常出现在我的程序中:
if (ptr) {
ptr->method();
}
我已经用单线代替了它(就像我在Java看到人们这样做):
ptr && (ptr->method(), true);
从生成的机器代码的角度来看,这是一个好习惯,还是我在我的二进制文件中引入了额外的常量?来自Java 的这个“端口”可能会在我的程序中引起什么问题?
【问题讨论】:
-
原版更好看,更易读。
-
是的,但类似的代码在
Java中很常见,而Java据说(根据某些人)比C++“更好”。 -
@user1095108 其他人不同意某些人。
-
@user743414 为什么?这个特定的示例是完全有效的(如果非常不可读)代码。当然,除非有人疯狂到让
operator ,超载method()返回的任何类型。 -
@Angew 如果
operator&&过载也会失败,因为kills the lazy evaluation ;)