考虑以下内容:
class A {
public:
const int c; // must not be modified!
A(int _c)
: c(_c)
{
// Nothing here
}
A(const A& copy)
: c(copy.c)
{
// Nothing here
}
};
int main(int argc, char *argv[])
{
A foo(1337);
vector<A> vec;
vec.push_back(foo); // <-- compile error!
return 0;
}
很明显,拷贝构造函数不够。我错过了什么?
编辑:
当然,我不能在operator=()
方法中更改this->c
,所以我不知道operator=()
会被使用(虽然std::vector
要求)。
operator=
修改const成员,那么你现在已经给了任何代码片段执行相同操作的方法。 - UncleBens