分享

C++操作符重载(“=”)

 哈飞扬 2013-06-06
赋值操作符“=”重载
 两个同类型的对象之间可以赋值,其含义是用一个对象的状态来改变另一个对象的状态;
 C++编译程序会为每一个类定义一个隐式的赋值操作符重载函数,其行为是:逐个对成员进行赋值操作,但是它不能满足对象间赋值的操作。
 赋值操作符只能作为非静态的成员函数来重载,并且,它不能被派生类继承;
所谓的赋值构造函数,就是重载=这个操作,是得它的操作数为类时,也能得到我们想要的结果。
class Employee
{
public:
 //默认构造函数
 Employee():name("noname"),ID(counter){counter++;}
 //接受一个string类参数的构造函数
 Employee(const string nm):name(nm),ID(counter){counter++;}
 //复制构造函数
 Employee(Employee &other):name(other.name),ID(other.ID){}
 //赋值构造函数
 Employee& operator=(const Employee &rhs)
 {
  name = rhs.name;
  //返回this指针意味着可以连续赋值
  return *this;
 }
private:
 string name;
 int ID;
 static int counter;
};

其中的Employee& operator=(const Employee &rhs)便是对“=”的重载。其中operator=表明重载的是“=”操作符。形参必须与操作符对应的操作数一致:按理来说,应该是“=”左右两边的类型都有,但这里隐式的包含了*this指针,指向了“=”的做操作数,所以只有一个形参。函数体的具体内容很明显,就是用一个对象的数据成员给另一个对象的数据成员复制。返回this指针意味着我们可以进行a=b=c这样连续赋值的操作。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多