• C++ 非常量引用无效


    /* 非常量引用无效 */
    #include <iostream>
    
    using namespace std;
    
    /*
    C++标准的规定:非常量的引用不能指向临时对象:
    
    为了防止给常量或临时变量(只有瞬间的生命周期)赋值(易产生bug),只许使用const引用之。
    */
    
    class Student
    {
    public:
        Student(int num) :_num(num) 
        {
        }
    
    private:
        int _num;
    };
    
    void send(const Student & s)
    {
    }
    
    int test()
    {
        send(Student(10)); //error:用类型为‘Student’的右值初始化类型为‘Student&’的非常量引用无效
    
        /*
            分析:
                这里Student(10)的作用于仅限于send(),过了send()函数就会被释放,所以说Student(10)是一个临时对象
            C++标准的规定:非常量的引用不能指向临时对象,为了防止给常量或临时变量(只有瞬间的生命周期)赋值(易产生bug)
            ,只许使用const引用之。
            所以应该修改send(const Student & s);
            注意不加const,可能在vs中可以编译通过,但是在g++可能编译错误
    
        */
        return 0;
    }
    
    int main()
    {
        test();
        getchar();
        printf("ok
    ");
        return 0;
    }
  • 相关阅读:
    web--ajax--json
    4.26
    4.25
    4.23
    4.22
    4.20
    4.19
    4.18
    4月问题总结章
    4.17
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/10339637.html
Copyright © 2020-2023  润新知