首页 > 解决方案 > 为什么我需要将默认引用参数定义为 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;

标签: c++constantslvalue

解决方案


添加过载。这是最简单,最容易解决的方法。

void resize(size_t n, std::string &s); 
//add overload
void resize(size_t n)
{
    std::string s;
    resize(n, s);
}

推荐阅读