有没有,如果有,有哪些?
3 回答
“范式转变”是什么意思?
C++0x 引入了许多新特性,这些特性当然会改变你编写程序的方式。
有一些小事情可能会对所使用的语法产生很大影响,但不会对语义产生太大影响。例如 lambda 函数和基于范围的 for 循环:它们将为我们已经在做的事情提供更好的语法。
然后有一些大事情会改变事情的运作方式。尤其是:
右值引用可以让您以不同的方式思考对象如何工作以及如何使用它们:按值传递(和返回)对象可能会更容易。
显式转换运算符将让我们定义转换运算符,而在 C++03 中这样做是有风险的。
C++0x 没有引入任何新的范式,也没有改变任何范式。
编辑:然而,这些范式的实现受到可变参数模板和右值引用的一些相当大的改变,只是开始。
事实上,我认为是的,存在范式转变。警告:我从未用 C++ 编写过面向对象的代码。
可能允许范式转变的变化是智能指针的标准化std::shared_ptr
。现在,标准库终于包含了一个实现良好、高效且可能没有错误的共享指针。
C++ 专家知道要正确处理它们是多么困难,并且大多数引用计数指针的库实现可能包含细微的错误。因此,即使(出于某种脑残的原因)公司禁止使用 Boost,最终获得可靠的实施也很重要。
这可能会对内存泄漏的数量产生严重影响:如果面向对象的 C++ 应用程序停止泄漏内存,那将是一种范式转变。
另一方面,在 OOP 代码中使用自己的智能指针的公司可能不会在未来十年内切换到 C++0x。
(再次强调这一点,因为它被反复误解:我并不是将智能指针技术称为范式转变。我指的是面向对象架构中内存泄漏的完全消失。)