C++: 什么时候不能使用引用?

比如什么时候使用引用容易发生错误?或者指向一个不存在的地方?或者会导致内存泄露?或者别的错误?

引用其实也可以看成是指针,因为引用的内部实现也是通过指针实现的。
当一下情况最好不要用引用。
当指向对象可能为空的时候,即这个变量(暂且叫变量吧)可以不指向任何对象的时候。
需要在不同时刻指向不同的对象--因为引用只能初始化一次,然后给它赋值其实是给它初始化引用的对象赋值一样。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-16
引用一般是用在函数的参数和返回值,其他地方就不要用了。

...符重载的时候究竟什么时候应该加引用,什么时候不应该加引用?_百度...
如果返回值会被赋值,就必须返回引用,例如=重载\\x0d\\x0a如果返回值是一个局部变量,就一定不能返回引用,例如+重载\\x0d\\x0a如果为了提高效率,参数可以使用引用,\\x0d\\x0a而[]的实际参数经常是一个常量,常量你是无法引用,所以不能用引用作为[]的参数。

c++什么时候该用引用,什么时候可以不用
参数是简单类型(如整数)而且程序中不改变参数的值就不要用了,复杂类型要用,避免拷贝构造函数被调用。如果你想改实际参数的值,也用引用。--- 不是说了吗,根据你的数据类型和是否要在函数中改变此参数的值。像求加法这样的简单函数,就不用引用:int Add(int l, int r){ return l + r;} ...

C++引用引用的概念
在C++中,引用是一种特殊类型的别名,用于直接操作已存在的变量。其声明方式为:类型标识符 &引用名=目标变量名。这里,&并不是地址运算符,而是用来标识引用与目标变量的关系。声明引用时,必须同时初始化,例如:int a, &ra=a; 这意味着ra成为了a的别名。对ra进行赋值,如ra=1,等同于a=1,因...

c++ 结构体内不能用引用吗?
你好,在C++里面,结构体实际上与类已经没有太大区别(仅默认访问权限不同)。所以结构体里面,应该是由成员变量,成员函数组成的。作为成员变量,是可以为引用的。但是不能在声明变量的位置直接进行初始化。(VS2008以后的版本稍微有点不同)你的语法相当于 int b = 10;class A { int &a = b;}...

C++中引用与指针的区别
- 存在const指针,但const引用是不允许的。- 指针可以有多个级联,例如`int **p;`是合法的,但`int &&a`是非法的,因为引用只能有一个级别。- 指针可以赋予空值(nullptr),而引用在定义时必须初始化,并且不能为nullptr。- 指针的值可以改变,指向不同的内存单元,而引用在初始化后不可更改。- ...

c++是否能够定义引用的引用?
在C++中定义引用的引用是否可行?答案是否定的,严格遵循标准的编译器不允许直接定义引用的引用。间接定义引用的引用有两种方式:类型别名和模板。例如,通过类型别名或函数模板参数,可以实现间接定义。但请注意,这种定义实际上是通过引用折叠实现的,最终仍然保留为普通的引用或右值引用,因此不存在直接定义...

C++中什么时候用指针,什么时候用引用
严格来说,C++是不建议使用指针的,因为面向对象是引用和智能指针的天下,因此,C++来说最好不要用指针使用引用。但是有迫不得已的时候比如在类中定义一个指向成员变量的指针,在函数中进行动态申请的情况,这个时候智能使用指针,或者一些智能指针什么的。所以具体情况具体分析,没有什么绝对。建议尽可能少...

c++里的引用类型怎么用啊?完全不会
补充一下:1、引用定义时要初始化,不能定义个空的引用;如:int&a;\/\/错误。2、引用原理上相当于指针,表现为给变量另起一个名字,但是定义后就锁定了,不能改变指向。3、int a=0;int*b=a;int*&c=b;\/\/c是指向指针的引用。

C++ 中什么是引用 申请和使用引用要注意哪些问题
引用必须在定义时马上被初始化,因为它必须是某个东西的同义词。你不能先定义一个引用后才 初始化它。例如下面语句是非法的:Point &pt3;pt3=pt1;那么既然引用只是某个东西的同义词,它有什么用途呢?下面讨论引用的两个主要用途:作为函数参数以及从函数中返回左值。二、引用参数 1、传递可变参数 ...

C++中关于引用的一个问题??
你可以把引用理解为一个常指针,所以引用一旦初始化,即不可与其它变量联系起来了。这样可以防止野指针等一些指针的弊病~~~也使得函数的按址传参更便于理解。

相似回答