Ref qualifiers:一种消除隐含对象的rl-valuness的方法。作为一个简单的例子,请参加以下课程
class example
{
int member;
public:
// ...
int& value() &;
// ^
int&& value() &&;
// ^^
int const& value() const&;
// ^
};
使用此C ++ 11功能(标有^
的语法),允许我们控制将使用
value()
版本
实际上,参考资格适用于classe的*this
Defaulted / Deleted functions:指定特殊成员函数,因为编译器已生成(默认)定义或无法访问(删除)。举个例子吧
struct type {
type(const type&) = delete;
type& operator=(const type&) = delete;
};
上述结构实现了不可复制且语义非常清晰
答案 0 :(得分:4)
是的,但没有多大用处,因为构造函数和析构函数不能被重新限定。
您可以对赋值运算符进行ref-qualified:
struct S {
S &operator=(const S &) && = default;
};
int main() {
S s;
S() = s; // OK
s = S(); // error - LHS must be an rvalue
}
但是,我有点不知道这会有什么用处。