通过 const rerefence 传递向量并向向量添加元素

Passing a vector by const rerefence and adding an element to the vector

我正在尝试理解以下成员函数:

void Date::setDays(const std::vector<Date> &days){
  Date d(1, 1, 1);
  m_days = days;
  m_days.push_back(d); // valid.
  days.push_back(d); // invalid.
}

在上面属于 class Date 的成员函数中,我通过引用将 days 作为常量传递。我能理解为什么在 days 中添加一个元素是非法的,因为它是 const。但是,我的困惑是,我怎么可能向 m_days 添加一个元素?它不是指与 days 相同的向量吗?当我向 m_days 添加一个元素时,是否意味着我也在向 days 添加一个元素?

m_days = daysdays 数组进行 copy,即 m_days 是另一个独立于 days 的向量,它具有days 数组的副本。您对 m_days 所做的任何更改都不会影响 days。因此,days 的常量性没有被违反。

您分配 m_days days 副本 。它是 not 相同的向量,如果 m_days 不是 const (显然不是,因为你刚刚分配给它)然后向它添加元素只是美好的。您对 m_days 所做的任何事情都不会以任何方式影响 days