C++/Copy Controls/Copy-Assignment operators

正如类(class)控制对象如何初始化,类同时也控制该类的对象是如何赋值:

Sales_data trans,accum;
trans=accum;//这里使用了类Sales_data的copy-assignment 操作符

这里的copy-assignment操作符和copy结构函数(copy constructor)一样,当没有主动创建的时候,编译器就会自动创建copy-assignment 操作符。

重载符(overloaded operator)

重载符(overloaded operator)是一种函数,该函数名字由关键字operator 后跟着所需定义的符号,因此赋值操作符函数的名字就是“operator=”,该函数和其他一般的函数一样,有返回值和参数表。其中重载操作符中的参数代表这个操作符(operator)的操作数(operands)。在一些类中重载符函数是必须是要显示申明和定义的。当一个类中存在一个操作符函数的时候,左操作数被连接到 this,右操作数则为参数表中显示参数。
例如:

class Foo{
public:
    Foo& operator=(const Foo&);
    //...
};

值得注意的是赋值操作符(Assignment operator)普遍是需要返回一个左操作数的引用(reference)。

定义Copy-Assignment Operator

如何定义Copy-assignment operator?我想给一个例子的话,就能很轻松的知道如何定义

Sales_data& Sales_data::operator=(const Sales_data &rhs)
{
    bookNo=rhs.bookNo;             //调用string::operator=
    units_sold=rhs.units_sold;     //使用内嵌的int赋值 
    revenu=rhs.revenue;       //使用内嵌的double赋值
    return *this;           //返回一个对象(右操作数)的引用
}

可知类中赋值操作符的定义是由内嵌或者其他类型的赋值操作完成的。

private复制控制(copy-control)

要禁止一个类的对象相互复制,赋值,可以在类设计将复制结构函数和复制赋值操作符函数放到私有成员中(private:下)

class privateCopy{
    privateCopy(const privateCopy& );
    privateCopy &operator=(const privateCopy& );
public:
    privateCopy()=default;
    ~privateCopy();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值