gpt4 book ai didi

c++ - 为什么 C++11 字符串新函数(stod、stof)不是字符串类的成员函数?

转载 作者:可可西里 更新时间:2023-11-01 18:03:58 31 4
gpt4 key购买 nike

为什么 header <string>的那些C++11新函数( stod , stof , stoull ) 不是 string 的成员函数类(class)?

不是更符合 C++ 编写 mystring.stod(...)而不是 stod(mystring,...)

最佳答案

令许多人感到惊讶的是,C++ 不是面向对象的语言(与 Java 或 C# 不同)。

C++ 是一种多范式语言,因此尽可能使用最好的工具来完成工作。在这种情况下,自由函数 是合适的工具。

指南:优先使用非成员非友元函数而不是成员函数(来自 Efficient C++,第 23 项)

原因:成员函数或友元函数可以访问类内部,而非成员非友元函数则不能;因此使用非成员非友元函数增加了封装

异常(exception):当成员函数或友元函数提供显着优势(例如性能)时,尽管有额外的耦合,但仍值得考虑。例如,尽管 std::find 工作得很好,关联容器如 std::set 提供了一个成员函数 std::set::find 在 O(log N) 而不是 O(N) 中工作。

关于c++ - 为什么 C++11 字符串新函数(stod、stof)不是字符串类的成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21426925/

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