嘗試將 int 分配給字串
std::string s = 5;
會產生以下編譯器錯誤:
error: conversion from ‘int’ to non-scalar type ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} requested
但是,將 int 分配給映射中字串的值則不然。例如下面的代碼編譯,更糟糕的是使賦值將 int 轉換為 char
map <string, string>m;
m["test"] = 5;
這不應該是一個錯誤嗎?
uj5u.com熱心網友回復:
這不應該是一個錯誤。m["test"] = 5;進行分配,并且std::string有一個賦值運算子采取char,并且int可以轉換到char隱式。
constexpr basic_string& operator=( CharT ch );
另一方面,std::string s = 5;不是賦值而是初始化;并且std::string沒有任何建構式采用intor char。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/394778.html
