zoukankan      html  css  js  c++  java
  • 引用

    #include <iostream>
    using namespace std;
    int getAA() {
        int a;
        a = 10;
        return a;
    }
    int& getAA1() {
        int a;
        a = 10;
        return a;
    }
    int main() {
        int a = 0;
        int a2 = 0;
        a = getAA();
        a2 = getAA1();

        int &a3 = getAA1();
        cout << "a: " << a << endl;
        cout << "a2: " << a2 << endl;
        cout << "a3: " << a3 << endl;
        /*
            a3产生乱码,因为引用相当于编译器做了如下操作
            int * getAA1() {
                int a;
                a = 10;
                return &a;
            }
            当执行int &a3 = getAA1();的时候getAA1返回a的地址,a3中实际存了地址,打印a3的时候,编译器做了*a3的操作,
            但是,a是临时变量,在将地址传给a3之后就回收了,所以,此时打印a3将会出现不确定的乱码
            而a2不同,在执行a2 = getAA1();的时候,getAA1()返回了a的地址,但是a2是整型,所以,a2中传入的是地址a的值,
            后来在打印的时候,虽然临时变量a的值已经回收,但是a2中已经存下了a的值,可以正确打印
        */
        system("pause");
        return 0;
    }

    当被调用的函数当左值的时候,必须返回一个引用

  • 相关阅读:
    15 鼠标事件
    09 属性操作
    06 DOM操作之插入节点
    03 如何处理多个库$冲突的问题
    01 jquery引入
    08 千千音乐盒实现全选和反选
    03 衣服相册切换效果
    02 显示和隐藏图片
    01 图片切换
    派生
  • 原文地址:https://www.cnblogs.com/dongjian16/p/6992735.html
Copyright © 2011-2022 走看看