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