• C++ 常量引用


    普通引用为形参的函数,一般会更改实参的值;以常量以及常量引用为形参的函数,一般不对实参进行修改。

    常量引用兼有常量和引用的优点。不会新创建一个变量然后进行拷贝,而是直接传对象,速度快,同时保证了在函数内部无法对对象进行修改。

    通常,引用的类型必须和所引用的类型一致,但常量引用在类型不匹配时,编译器首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就是对该临时变量的操作。普通引用则没有这样的过程。

    这个过程的一个作用是让不匹配的类型隐式转换成需要的常量类型。一个典型的例子如下:

    int g1(string &str){}
    int g2(const string &str){}
    int main(){
        g1(".."); //failed
        g2("..");
    }
    

    常量引用为形参时,形参指向实参的空间;而常量为形参时,编译器会给形参重新分配空间

    int f(const int x) {cout<<&x<<endl;}
    int g(const int &x) {cout<<&x<<endl;}
    int main() {
        int n=1;
        cout<<&n<<endl;
        f(n);
        g(n);
    }
    
    0x3beafe1c
    0x3beafdf0
    0x3beafe1c
    
  • 相关阅读:
    交互题
    线段树
    最小生成树
    拓扑排序
    欧拉回路
    RMQ问题
    dfs序与求子树子节点(染了色)的个数
    dp题
    树状数组与离散化
    没做完的题
  • 原文地址:https://www.cnblogs.com/mollnn/p/12598961.html
Copyright © 2020-2023  润新知