c++ - 为什么我需要将默认引用参数定义为 const 以便我可以为其分配左值?
问题描述
我定义了一个带有默认参数的函数:
void resize(size_t n, std::string &s = std::string()); // error: initial value to non-const must be lvalue
正确的路:
void resize(size_t n, const std::string &s = std::string());
我想知道为什么const
会有不同?
我知道可以为const
变量分配左值。他们是同一个问题吗?
const int a = 42;
解决方案
添加过载。这是最简单,最容易解决的方法。
void resize(size_t n, std::string &s);
//add overload
void resize(size_t n)
{
std::string s;
resize(n, s);
}
推荐阅读
- php - PHP如何根据其他数组值按名称选择数组并将内容分配给变量?
- c# - 如何在记录中使用 foreach
在 TypeScript 和 Angular 中? - android - 是否可以将 Espresso 作为模块实现为我的 Mavan 自动化项目的一部分
- javascript - 如何解决数据库连接错误[SequelizeConnectionError]?
- java - 从数组列表创建重复记录
- itext - 如何在itext 7中设置页面的旋转角度
- python-3.x - 函数中返回的意外缩进
- sql - 如何在不使用 Redshift 中的数据透视函数的情况下比较 SQL 中的完整组?
- pandas - 使用数据框列绘制图表
- c++ - 从文件流式传输时导致while循环中断的所有条件是什么