【发布时间】:2016-12-03 13:20:10
【问题描述】:
我正在编写代码,并使用“=”运算符将一个对象分配给另一个对象和一个复制构造函数。这是代码
DJSet(const DJSet& ds)
{
vector<Element<T>* > vec= ds.v_;
for (int i = 0; i < vec.size(); i++)
{
v_.push_back(vec[i]);
}
//cout << "Copy Called\n";
}
DJSet operator=(DJSet ds)
{
DJSet<T> djs;
vector<Element<T>* > vec = ds.v_;
for (int i = 0; i < vec.size(); i++)
{
djs.v_.push_back(vec[i]);
}
cout << "= Called\n";
return djs;
}
DJSet 类只包含Element<T>* type 的一个 Vector
所以当我执行下面的代码时。
DJSet<string> djs_rhs;
DJSet<string> djs_lhs;
cin >> name;
djs_rhs.add(name);
cin >> name;
djs_rhs.add(name);
cin >> name;
djs_lhs.add(name);
cin >> name;
djs_lhs.add(name);
djs_lhs = djs_rhs;
cout << djs_lhs << endl;
cout << endl;
cout << djs_rhs << endl;
它没有将右侧的值复制到左侧的对象,它同时调用了复制构造函数和“=”运算符。请帮我解决一下这个。我怎样才能继续这个?如果你愿意,我可以提供整个源代码。
【问题讨论】:
标签: c++ operator-overloading copy-constructor