我试图了解以下成员函数:
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
中添加了元素?
答案 0 :(得分:2)
m_days = days
对days
数组进行复制,即m_days
是另一个独立于days
的向量,该向量具有{ {1}}数组。您对days
所做的任何更改都不会影响m_days
。因此,不会违反days
的常量性。
答案 1 :(得分:2)
您为m_days
分配了days
的副本。它不是相同的向量,并且如果m_days
不是const
(显然不是因为您刚刚分配了它),则向其中添加元素就可以了。您对m_days
所做的任何事情都不会以任何方式影响days
。