小编Pet*_*ete的帖子

在赋值运算符中调用复制构造函数

在我正在处理的项目的现有类中,我遇到了一些奇怪的代码:赋值运算符调用了复制构造函数.

我添加了一些代码,现在赋值运算符似乎会造成麻烦.如果我只使用编译器生成的赋值运算符,它工作正常.所以我找到了解决方案,但我仍然很想知道为什么这不起作用.

由于原始代码是数千行,因此我创建了一个更简单的示例供您查看.

#include <iostream>
#include <vector>

class Example {

private:
  int pValue;
public:
  Example(int iValue=0)
  {
    pValue = iValue;
  }

  Example(const Example &eSource)
  {
    pValue = eSource.pValue;
  }

  Example operator= (const Example &eSource)
  {
    Example tmp(eSource);
    return tmp;
  }

  int getValue()
  {
    return pValue;
  }

};

int main ()
{
  std::vector<Example> myvector;

  for (int i=1; i<=8; i++) myvector.push_back(Example(i));

  std::cout << "myvector contains:";
  for (unsigned i=0; i<myvector.size(); ++i)
    std::cout << ' ' << myvector[i].getValue();
  std::cout << '\n';

  myvector.erase (myvector.begin(),myvector.begin()+3);

  std::cout …
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor assignment-operator

5
推荐指数
2
解决办法
316
查看次数