美文网首页
★24.引用限定符

★24.引用限定符

作者: iDragonfly | 来源:发表于2017-06-30 22:26 被阅读0次

问题

std::string fun() { return std::string("123"); }

int main() {
    fun() = "123";         // 可以通过C++11引入的引用限定符禁用掉这种赋值方式
    return system("pause");
}

解决方案

看不懂的部分代表还没有弄明白右值引用。

class A {
public:
    A & operator=(const A & rhs) & = default;         // 只能向非const左值赋值
    void f1() & {}                                    // 只有非const左值能调用f1
    void f2() const & {}                              // 任何A类型对象都能调用f2,因为可以将一个const左值引用绑定到任何值(包括左值和右值)
};

class B {
public:
    B & operator=(const B & rhs) && = default;        // 只能向非const右值赋值
    void f1() && {}                                   // 只有非const右值能调用这个函数
    void f2() const && {}                             // 任何右值(包括const或非const)都能调用这个函数
};

A fun1() { return A(); }                              // 返回一个非const的右值
const A fun2() { return A(); }                        // 返回一个const的右值
B fun3() { return B(); }                              // 返回一个非const的右值
const B fun4() { return B(); }                        // 返回一个const的右值

int main() {
    // A()和B()产生一个非const右值
    fun1() = A();         // 错误
    fun2() = A();         // 错误
    fun3() = B();
    fun4() = B();         // 错误

    A().f1();             // 错误
    A().f2();
    B().f1();
    B().f2();

    return system("pause");
}

相关文章

  • ★24.引用限定符

    问题 解决方案 看不懂的部分代表还没有弄明白右值引用。

  • iOS中的限定符

    一、变量限定符 ARC为变量提供了四种生命周期限定符 __strong这是默认的限定符,无需显示引入。只要有强引用...

  • iOS 内存管理

    周期限定符: ●__strong 这是默认的限定符,无需显示引入。只要有强引用指向,对象就会长时间驻留在内存中。可...

  • 变量限定符

    ARC 为变量供了四种生命周期限定符。 __strong 这是默认的限定符,无需显示引入。只要有强引用指向,对象就...

  • C++中的指针的引用

    C++提供了&引用变量类型的定义,另外还提供了一个const限定符。 引用类型的变量实际上是一个别名,这个功能类似...

  • 变量限定符和属性限定符

    目录 变量限定符 属性限定符 变量限定符 ARC 为变量提供了四种生命周期的限定符:1、_strong: 默认限定...

  • 正则表达式

    常见的元字符 常用的限定符 常见的反义代码 懒惰限定符

  • OpenGL ES 3.0编程指南:第五章. OpenGL ES

    19. Precision Qualifiers (精度限定符) 精度限定符可以指明shader中变量的精度,变量...

  • Variable Qualifiers

    变量限定符 对变量使用以下生命周期限定符: __strong 是默认限定符。只要有一个指向对象的强指针,对象就保持...

  • 正则专题

    1 正则表达式的基本语法 元字符的功能:限定符;选择匹配符;分组组合和反向引用符;特殊字符;字符匹配符;定位符 1...

网友评论

      本文标题:★24.引用限定符

      本文链接:https://www.haomeiwen.com/subject/nxaicxtx.html