c++ - 为什么我可以将 `std::string` 右值存储到 `const std::string &`
问题描述
我不明白这段代码是如何在没有警告的情况下编译的:
#include <string>
#include <iostream>
int main()
{
const std::string a = "/42";
const std::string &b = a.substr(1);
std::cout << "A without slash is " << b << std::endl;
}
因为a.substr(1)
返回一个新的std::string
,b
正在引用一个临时左值,因此是一个悬空引用。为什么它有效?
解决方案
推荐阅读
- tmap - 为什么不是所有的点都出现在使用 tmap 创建的地图上?
- string - vb.net 如何将字符串“one”转换为整数 1
- ios - 我如何将完成处理程序传递给另一个函数 swift ios
- angular - TypeScript:通过 API 请求值,但值未正确保存
- html - 如何让屏幕阅读器在里面读取 aria-label ?
- sql - Sequelize Parens 在 WHERE 子句中
- c++ - 如何将类的静态方法作为 std::unique_ptr 的删除器传递?
- react-native - 使用 react-hook-form 的 React Native 应用程序不起作用(查看配置 getter 回调表单组件“输入”必须是一个函数(收到“未定义”)
- r - 在点图的底部添加条形图
- python - 来自线程 Flask 的安全数据库查询(peewee)