通过const Rerefence传递向量并将元素添加到向量

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

本文关键字:向量 元素 添加 通过 Rerefence const      更新时间:2023-10-16

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

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.
}

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

您分配了daysm_days A copy 。它不是不是相同的向量,并且如果m_days不是const(显然不是因为您只是分配给它),则可以向其添加元素。您对m_days无所作为会以任何方式影响days

m_days = days使days数组的复制,即m_days是另一个与days无关的向量,该向量具有days数组的副本。您对m_days的任何更改都不会影响days。因此,不违反days的constness。