zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    苹果手机的SB系列(9)移动版的AAP个个都比桌面版大?
    初识Redis(四)
    初识Redis(三)
    初识Redis(二)
    初识Redis(一)
    Codeforces Round #589 (Div. 2)
    康拓展开学习笔记
    最短路模板
    K
    D
  • 原文地址:https://www.cnblogs.com/mollnn/p/12598961.html
Copyright © 2011-2022 走看看