【问题标题】:Where can I find function definition of overloaded operators of string class of c++?在哪里可以找到 c++ 字符串类的重载运算符的函数定义?
【发布时间】:2020-07-22 06:43:24
【问题描述】:

有没有什么方法可以通过在我的PC上浏览C++库来找到已经重载的C++字符串类的运算符函数? 我使用 dev C++ 编写代码。

【问题讨论】:

  • 你看<string>了吗?
  • 如果您正在寻找实现,请查看 IDE 安装目录中某处的 string(没有任何扩展名)文件。我不确定 Dev-C++ 是否如此,但 Visual Studio 将 C++ 标准头文件存储在其安装文件夹中。
  • 为什么要这样做?标准库中的所有实体及其行为均由 C++ 标准详细定义,并在 cppreference.com 等参考资料中列出。您只需要知道这些信息就可以使用标准库。没有实际理由去研究实施。
  • @AliAzlan 你的老师希望你找到什么?标准库头文件对于初学者来说相当复杂且难以理解(正如我上面提到的,如果您只想使用标准库,没有理由研究它们)。如果没有更多细节,这项任务对我来说没有任何意义。

标签: c++ string function operator-overloading definition


【解决方案1】:

在 Windows 和 Visual Studio 上,您可以打开 xstring 文件,该文件位于 Visual Studio 安装路径内的 VC/include 目录中。在该文件中,您可以看到一些运算符是如何被重载的,例如:

_Myt& operator=(const _Elem *_Ptr)
    {   // assign [_Ptr, <null>)
    return (assign(_Ptr));
    }

【讨论】:

  • 什么是“_Myt”?为什么字符串类不是“字符串”?不是字符串类运算符重载吗?但是,您对那个 xstring 文件是正确的,并且存在许多运算符的重载函数,但我不知道为什么运算符重载中不使用名称“string”。
  • @AliAzlan 我没有看过 VC 实现,但_Myt 可能是另一个类(模板)std::basic_string 继承自(以某种方式),std::stringstd::basic_string&lt;char, std::char_traits&lt;char&gt;&gt; 的别名。出于不同的原因,将实现细节放入继承的类中在标准库(及其外部)中非常常见。正如我在问题下的 cmets 中提到的,如果没有对语言有良好而广泛的理解,标准库的实现对读者来说没有多大意义。
猜你喜欢
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
  • 2012-12-19
  • 1970-01-01
相关资源
最近更新 更多