引用详解

Posted boost

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了引用详解相关的知识,希望对你有一定的参考价值。

专业的C++代码会用到大量的引用,在C++中引用是变量的别名,所有对引用的修改都会改变被引用变量的值,可以将引用当作隐私指针,这个指针没有取变量地址和解除引用的麻烦(也可以将引用当作是原始变量的别名)。

1.引用变量

引用变量在创建的时候必须初始化

int a = 0;
int &b = a;    //work
std::cout << "b:" << b << std::endl; 
    
//int &c = 0;   //error
const int &c = 0;  //work

值得注意的是:不能对创建引用直接“值传递”,除非这是一个const引用;

引用总是引用当初初始化的那个变量,一旦创建就无法修改变量,但是可以修改变量的值,比如:

int x = 1,y = 2;
    int &xRef = x,&yRef = y;
    std::cout << "X : " << xRef << std::endl;
    std::cout << "y : " << yRef << std::endl;
    
    //X : 1
    //y : 2
    
    xRef = &y;        //error    

为什么错误呢?

因为xRef是int&,而y得地址是一个指针。所以两者而无法赋值。

如果将一个引用赋值给另一个引用呢?

    xRef = yRef;            
    
    std::cout << "X : " << xRef << std::endl;
    std::cout << "y : " << yRef << std::endl;

结果是:

X : 2
y : 2

看出这里只是将y的值传递给xRef(也就是x),但是XRef还是x得引用。

 



以上是关于引用详解的主要内容,如果未能解决你的问题,请参考以下文章

Android App 在片段中创建 ListView 引用时关闭

引用向量的部分片段?

片段对话框对活动的松散引用

详解Android WebView加载html片段

未解决的对“片段”部分中的符号“”的引用

解决未能加载文件或程序集“Newtonsoft.Json ...."或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)(代码片段