operator= 的思考

class A

{

public:

    A();

    ~A();

    A& operator= (const A& other)

    {

        if(this == &other)

            return *this;

        b = other.b;

        strcpy(c, other.c);

        return *this;

    }

int b;

char *c;

};

 

下面一步步解释:

为什么other是引用传值不是复制传值,而且要加上const?因为other是一个类,所以就有可能有指针成员

如c,那么,如果是复制传递,other中c只是实际的地址的复制,而当前是在另一个栈中,所以c中记录的地址并不是

真正的地址!

为什么返回值是引用呢?可以这样理解,我们通过默认构造函数定义了一个A的成员a,这个成员没有值,这个时候,

我想把其它的成员b给a,这个时候如何做?其实这个时候是把b成员的值给a,

        b = other.b;

        strcpy(c, other.c);

        return *this;

这几句中,在return *this;之前a什么都没有得到,因为这时候的this和a没有关系,这时候的this更像一个临时的

A的对象,直到return *this;才把this给a,这也是为什么用引用,因为引用才能保证,this和a是一个事物

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值