c++ - 为什么我可以将 Int 分配给 String 而不会出现编译器错误?

标签 c++

所有这些行编译并运行,输出中没有打印任何内容:

  std::string ss{6}; 
  ss=7;
  std::cout << "ss " << ss << "\n";

我没有看到任何暗示它可以将整数强制转换为字符串的 std::string 的引用构造函数,那么为什么编译器不报错呢?

最佳答案

“问题”是 std::string可从 char 分配和 int可隐式转换为 char .

看看std::basic_string::operator=第 (4) 点:

basic_string& operator=( CharT ch );

编辑

M.M's comment 中所述, std::string ss{6};调用构造函数 initializer_list<char> (参见 std::basic_string::basic_string (9) )......问题再次出现。

关于c++ - 为什么我可以将 Int 分配给 String 而不会出现编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38048208/

相关文章:

c++ - 为迭代器和无符号整数重载 + 运算符

c++ - Rcpp - 在包结构之外编译

c++ - 大括号对空构造函数重要吗?

c++ - 将数组中的所有数字更改为其索引值

c++ - 为什么需要模运算符?

c++ - 快速计算 3 维空间中的粒子接近度

c++ - MFC:如何设置CEdit框的焦点?

c++ - LuaPlus:如何将表格插入堆栈?

c++ - 无法使用 boost::geometry::model::polygon

c++ - 为什么 Valgrind-Massif 和 TOPs 内存消耗之间存在差异?