该程序旨在为Foo创建一个深度复制构造函数。下面是类的定义:
class Foo {
int _cSize;
char *_cValues;
std::vector<int> _iValues;
double _dValues[100];
public:
double &dValues(int i) { return _dValues[i]; }
int &iValues(int i) { return _iValues[i]; }
char &cValues(int i) { return _cValues[i]; }
int cSize(void) const { return _cSize; }
Foo(void) : _cSize(100), _cValues(new char[_cSize]) {}
};下面是复制构造函数的实现:
Foo &Foo::operator=(const Foo& foo) {
_cSize = foo._cSize;
_cValues = new char [_cSize];
for (int i = 0; i < _cSize; i++) {
_cValues[i] = foo._cValues[i];
}
_iValues = foo._iValues;
for (int i = 0; i < 100; i++) {
_dValues[i] = foo._dValues[i];
}
return *this;
}但是,operator=显示了一个错误,即“隐式声明的复制赋值操作符的定义”。关于如何修复复制构造函数,有什么建议吗?
发布于 2022-05-07 18:32:09
复制构造函数类似于
class Foo {
// ...
public:
Foo(const Foo& op) {
// copy fields
}
};请注意,它们是构造函数(),就像您声明的Foo(void)一样,但是它们有一个param,这是一个const引用。
另见:Copy constructor and = operator overload in C++: is a common function possible?
https://stackoverflow.com/questions/72154591
复制相似问题