【发布时间】:2023-03-25 03:58:01
【问题描述】:
让我先解释一下我所说的“魔法”是什么意思。我将使用 Java 中的两个示例:
- 每个类都(直接或间接)继承
Object类。 - Java 不支持运算符重载,但
+运算符是为String对象定义的。
这意味着不可能在 pure(*) Java 中实现 Object 和 String 类。这就是我所说的“魔法”:要实现这些类,您需要编译器的一些特殊支持。
我一直喜欢 C++ 的一点是,据我所知,在 STL 中没有这样的“魔法”,也就是说,可以在纯 C++ 中实现 STL。
现在我的问题是:这是真的吗?还是 STL 的某些部分无法在纯 C++ 中实现,需要一些“魔法”/特殊编译器支持?
(*) “纯”是指不使用任何类库。
【问题讨论】:
-
软件从不依赖魔法。然而,一个好的软件可以创造“魔法”的错觉
-
@Vite:我知道 STL 是标准的一部分,但就像我的脚注所说,纯粹是指没有任何库。
-
@Job:我认为混淆源于您使用了“魔法”这个词。将其描述为“需要编译器/语言支持”可能会消除大部分混淆。
-
非常好的问题。 +1 :)
-
“任何足够先进的技术都与魔法无异。” (AC 克拉克)