我试图了解以下成员函数:
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
添加一个元素?
你给m_days
分配了days
的副本。它不是相同的向量,如果m_days
不是const
(它显然不是因为你刚刚分配给它),那么添加元素就好了。你对m_days
所做的一切都不会以任何方式影响days
。
m_days = days
制作了days
阵列的副本,即m_days
是另一种独立于days
的载体,它具有days
阵列的副本。您对m_days
所做的任何更改都不会影响days
。因此,没有违反days
的常数。