右值和左值引用成员函数

通常,我们在一个对象上调用成员函数,而不管该对象是一个左值还是一个右值。

我们指出this的左值/右值属性的方式与定义const成员函数相同,即,在参数列表后放置一个引用限定符

class Foo
{
public:
    Foo& operator=(const Foo&) &;// 只能向可修改的左值赋值
};

引用限定符可以是&或&&,分别指出this可以指向一个左值或右值。类似const限定符,引用限定符只能用于(非static)成员函数,且必须同时出现在函数的声明和定义中。

对于&限定的函数,我们只能将它用于左值;对于&&限定的函数,只能用于右值。

一个函数可以同时用const和引用限定。在此情况下,引用限定符必须跟随在const限定符之后。

当我们定义const成员函数时,可以定义两个版本,唯一的差别是一个版本有const限定而另一个没有。引用限定的函数则不一样。如果我们定义两个或两个以上具有相同名字和相同参数列表的成员函数时,就必须对所有函数都加上引用限定符,或者所有都不加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值