gpt4 book ai didi

c++ - STL中有 "magic"吗?

转载 作者:IT老高 更新时间:2023-10-28 13:57:48 25 4
gpt4 key购买 nike

让我先解释一下我所说的“魔法”是什么意思。我将使用 Java 中的两个示例:

  1. 每个类都(直接或间接)继承 Object 类。
  2. Java 不支持运算符重载,但 + 运算符是为 String 对象定义的。

这意味着不可能在纯(*)Java 中实现 ObjectString 类。现在这就是我所说的“魔术”:要实现这些类,您需要编译器的一些特殊支持。

我一直喜欢 C++ 的一点是,据我所知,在 STL 中并没有这样的“魔法”,也就是说,可以在纯 C++ 中实现 STL。

现在我的问题是:这是真的吗?或者 STL 的某些部分无法在纯 C++ 中实现,需要一些“魔法”/特殊编译器支持?


(*) “纯”是指不使用任何类库。

最佳答案

换句话说,是否对编译器进行了任何处理以允许 STL 工作所需的“特殊情况”?

没有。

使用模板的魔力,所有这些都被实现为“纯”C++ 代码。

编译器已经做了一些工作来改进 STL(我正在考虑各种优化),但除此之外,不,如果你真的想要,你可以编写整个 STL。有些人做到了- STLPort是一个没有任何编译器制造商支持的实现。

关于c++ - STL中有 "magic"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com