通过const引用传递向量并将元素添加到向量中

时间:2019-03-17 13:23:38

标签: c++ const pass-by-reference

我试图了解以下成员函数:

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的成员函数中,我通过引用将days作为const传递。我可以理解为什么将元素添加到days是非法的const。但是,我的困惑是,如何向m_days添加元素?它不是指向与days相同的向量吗?当我向m_days中添加元素时,是否也意味着我也向days中添加了元素?

2 个答案:

答案 0 :(得分:2)

m_days = daysdays数组进行复制,即m_days是另一个独立于days的向量,该向量具有{ {1}}数组。您对days所做的任何更改都不会影响m_days。因此,不会违反days的常量性。

答案 1 :(得分:2)

您为m_days分配了days副本。它不是相同的向量,并且如果m_days不是const(显然不是因为您刚刚分配了它),则向其中添加元素就可以了。您对m_days所做的任何事情都不会以任何方式影响days