c++ - C++ 不是要求 (cond ? string_1 : string_2) 初始化一个字符串吗?
问题描述
解决方案
从您引用的那部分开始:
如果第二个和第三个操作数是相同值类别的glvalues并且具有相同类型,则结果是该类型和值类别,并且如果第二个或第三个操作数是位域,则它是位域,或者如果两者都是位域。
第二个和第三个操作数都是 type的左值std::string const
,所以结果是type的左值std::string const
。
std::string
从 a初始化 astd::string
涉及到一个副本。
但我们不是std::string
从 a 初始化 a std::string
。在:
const std::string& foo(const std::string& s1, const std::string& s2)
{
return (s1.size() < s2.size() ? s1 : s2);
}
我们std::string const&
从 type 的左值初始化 a std::string const
。这只是一个直接引用绑定。无需复制。
推荐阅读
- android - Kotlin:为什么要把“return”从“if”中去掉?(安卓工作室推荐)
- react-native - 元素类型无效:使用 TouchableHighlight 时应为字符串
- python - 我使用 beautifulsoup 的 Webscraping 代码没有超过第一页
- javascript - React Axios 服务类
- sonarqube - 在运行 run-sonar-swift.sh -v 时,传感器不应计算获取指标“文件”
- spring-boot - Thymeleaf - 如果存在值,如何填充输入字段?
- java - 如何获取数组中最小值和最大值的索引的返回?
- python - 如何将我的 LCD 与类测试连接以显示 x?
- flutter - 具有相同 key.jks 的颤振签名应用程序不起作用
- javascript - 订阅函数中未定义的组件变量