首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++中的深拷贝构造函数

C++中的深拷贝构造函数
EN

Stack Overflow用户
提问于 2022-05-07 16:48:40
回答 1查看 128关注 0票数 -1

该程序旨在为Foo创建一个深度复制构造函数。下面是类的定义:

代码语言:javascript
复制
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]) {}

};

下面是复制构造函数的实现:

代码语言:javascript
复制
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=显示了一个错误,即“隐式声明的复制赋值操作符的定义”。关于如何修复复制构造函数,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2022-05-07 18:32:09

复制构造函数类似于

代码语言:javascript
复制
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?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72154591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档