C++ std::to_字符串函数的位置

C++ std::to_字符串函数的位置,c++,C++,std::to_string函数不是std::string类的方法的原因是什么?因为这在逻辑上更合适,不是吗?我想知道他们为什么不成功: std::string类的静态成员函数 为什么他们不将它与构造函数集成,这样就可以像std::stringten(10)那样得到“10” C++不是一种面向对象语言。你可以在C++中编写面向对象代码,但你也不能。 to_string不是以OO样式编写的 有优势,;最大的一个是您的代码可以通过执行以下操作选择将to_string作为自定义点 using st

std::to_string函数不是std::string类的方法的原因是什么?因为这在逻辑上更合适,不是吗?我想知道他们为什么不成功:

  • std::string类的静态成员函数

  • 为什么他们不将它与构造函数集成,这样就可以像std::stringten(10)那样得到“10”


  • C++不是一种面向对象语言。你可以在C++中编写面向对象代码,但你也不能。

    to_string
    不是以OO样式编写的

    有优势,;最大的一个是您的代码可以通过执行以下操作选择将
    to_string
    作为自定义点

    using std::to_string;
    std::string foo=to_string(x);
    
    现在,在其封闭名称空间中实现
    to_string
    的任何类型都与上述代码一起工作


    而且,
    to_string
    可以说是源API和目标API的一种方法;因此,使用任何一种方法都是值得怀疑的。

    隐式转换参数是危险的,它会有难以调试的不可预测的行为。ad 1)这样做会得到什么?您是否愿意将
    std::string::to_string()
    而不是
    std::to_string
    ?ad 2)所以您认为,
    std::string
    应该提供一个构造函数,它接受
    int
    float
    double
    unsigned
    std::size\u t
    std::uint32\u t
    std::int64\u t
    std::pair
    <代码>标准::配对?应该有多少施工人员?那么用户定义的类型呢?通过使其成为一个独立的函数,它使您能够定义自己的重载。我想您的意思是问“为什么
    to_string()
    不是
    int
    和其他类型的成员,所以您可以执行类似
    int foo=42;string bar=foo.to_string()的操作?”原因是不是所有的东西都是对象,正如雅克在回答中指出的那样。在其他语言中,如C#,这是可能的,因为所有东西都是对象,并且所有东西的基本对象都有一个
    ToString()
    方法,其他所有东西都继承该方法(还有其他机制)@EtienDemartel如果标准允许,这将是一个有效的理由,但实际上它说重载
    std::to_string