C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 具有引用类成员的赋值操作符大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
只要新问题正在从我以前的问题 Overloaded assignment operator causes warning about recursion发展出来,我被合法地敦促将其作为新的问题发布.我在我的类Player中有一个引用类成员,我想实现这个类的复制构造函数和赋值运算符(=).我不得不提到,目的是对函数vector.erase进行精细的处理,因为没有这样,它就不能正常工作.我使用一个向量:vector allPlayers;班级球员的成员有:
class Player
{

  private:
  int id;
  int pMoney;
  int doubleInDicator;
  int squarePosition;
  Bank& bank;
  String pName;
  Square* capturedSquare;
  multimap<String,PropertySquare*> squaresColBought;
  multimap<String,House*> housesColBuilt;

}

如果我想要实现赋值运算符,那么它是否必须避免使用引用作为类成员?地图成员怎么样?我应该如何最终实现赋值运算符?

我不知道的另一个非常重要的问题是当我删除持有播放器的向量的迭代器时,指针类成员指向的对象会发生什么.任何帮助?

解决方法

当你想要一个赋值操作符时,我不会使用引用成员.如果你使用(智能)指针,你可以做
Player &operator=(Player const &other)
{
    bankPtr = other.bankPtr;
    // copy other members
}

在目前的情况下,bank = other.bank将复制other.bank的内容,而不是将此银行指向其他银行引用的内容.

对于多重类型的成员,它们可以被复制没有问题,但请记住,您将获得一个“深”的密钥副本(因为它们是字符串类型),而是一个“浅”的指针副本值,所以你最终得到共享状态.您可能需要使用shared_ptr作为值.

大佬总结

以上是大佬教程为你收集整理的c – 具有引用类成员的赋值操作符全部内容,希望文章能够帮你解决c – 具有引用类成员的赋值操作符所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。