zoukankan      html  css  js  c++  java
  • C++之引用

    引用即别名。引用不是对象,只是为已经存在的对象所起的另一个名字。

    格式:数据类型 &别名 = 原名

    注意点:

    1)引用必须初始化,初始化后不可改变。

    2)不能定义引用的引用(因为引用不是对象)。

    3)引用可作为函数参数(值传递,地址传递,引用传递)

    4)引用作为函数返回值,不可以返回局部变量的引用。
    例子:

    int& func()
    {
        int num = 10; //局部变量在栈区
        return num;
    }
    
    int main()
    {
        int& ref = func();
        cout << "ref = " << ref << endl;
        //cout << "ref = " << ref << endl;
        return 0;
    }
    

    codeblocks无返回结果,会出现错误信息。

    5)引用是函数返回值,函数调用可作为左值
    例子:

    int& func()
    {
        static int num = 10;   //静态变量在全局区
        return num;
    }
    
    int main()
    {
        int& ref = func();
        cout << "ref = " << ref << endl;
        func() = 20;             //相当于做了num=20的操作
        cout << "ref = " << ref << endl;  //ref又是num的别名,所以也是20
        return 0;
    }
    

    输出结果:
    ref = 10
    ref = 20

    6)引用本质:引用在C++内部实现是一个指针常量
    例子:

    void func(int& ref)
    {
        ref = 100;  //ref是引用,转换为*ref = 100
    }
    
    int main()
    {
        int a = 10;
        
        //自动转换为 int* const ref = &a; 指针常量是指针指向不可改,也说明为什么引用不可更改
        int& ref = a;
        ref = 20;    //内部发现ref是引用,自动帮我们转换为:*ref = 20;
        
        cout << "a: " << a << endl;
        cout << "ref: " << ref<< endl;
        
        func(a);
        return 0;
    }
    
  • 相关阅读:
    全栈程工程师
    月薪8000的程序员和月薪2万的程序员差别在哪里?
    原型中的访问
    关于 基本类型和复合类型 用== 判断的小问题
    使用原型解决构造函数问题
    前端工程师学习路线 --书籍
    程序员成长之路
    GIT学习(1) Pull和Fetch
    OO面向对象编程:第四单元总结及课程总结
    OO面向对象编程:第三单元总结
  • 原文地址:https://www.cnblogs.com/echobiscuit/p/12912255.html
Copyright © 2011-2022 走看看