c++后面的&是什么意思?

istream& operator>>(istream&,string);
我知道是引用,但是我第一次看到在变量后面的
&a=b不是前面吗?

是引用

引用既别名。也就是说引用是对一个对象名字的替代物。所有对引用的操作都直接影响到被引用的原始对象。有些书上说引用就是const指针,的确引用的行为类似const指针,但绝不能把它理解成const指针。因为指针是一个量,在内存中占据一块地方的,而引用是对象的别名,当然引用也可能占用一块存储空间,这取决于编译器的实现。总之,应当把引用理解成对象的别名,记住:“引用既别名”。
int iData;
int &ref = iData; //引用
int * const pointer = &iData; //const指针

cout << &iData << endl; //输出的是iData的地址
cout << &ref << endl; //输出的是iData的地址
cout << &pointer << endl; //输出的是pointer的地址
cout << &(*pointer) << endl; //输出的是iData的地址

二、引用与指针
引用很容易让人联想到指针,的确两者有相似地方,但更应当看到它们的不同之处:
1、引用必须在声明时既初始化,而指针不必。
2、引用一经初始化,就不能让它去引用另一个对象;而指针可以指向另一个对象。
3、引用不能为空;而指针可以。
4、引用不能new;而指针可以。
5、指针可以有指向指针的指针这种多级结构,而引用不能。
6、指针作加减运算是改变所指的对象,而引用的运算是改变所引用对象的值。
7、引用不能直接引用数组。
8、指针可以指向一个函数,而引用就不能直接引用函数(见effctive C++ 条款30)。
9、不存在指向引用的指针。
说明一下第4点:
MyClass &ref = new MyClass; //错误
MyClass *&pref = new MyClass; //错误
MyClass *p = new MyClass; //正确
MyClass &ref = (*p); //正确
delete &ref; //正确
所以,要分清对象和对象的引用,必须先有对象才能有对象的引用!!!

说明一下第7点:
int array[16];
int *p = array; //正确
int &ref = array; //错误
int *&pref = array; //错误
int *&pref = p; //正确

指针可以替代引用吗?引用能做的东西,指针也能实现,是这样吗?其实不然,C++中在一些地方,必须要用到引用:比如类的拷贝构造函数和某些运算符重载。关于它们,将另外专门讨论。

三、引用与函数:
1、引用作函数参数时会起到两个作用:
(1)避免参数传递的开销。如果直接传递参数,所传递的是参数的一个拷贝。如果参数是类对象,那么还会造成临时对象的创建,并调用构造和析构函数。使用引用就可以避免产生参数的拷贝和临时对象的创建。从而减少程序的开销。

(2)使函数能直接操作实参,也就是函数通过操作形参来操作实参。当然这个用指针也可以实现,但引用看上去更容易理解,可读性也更强。

注意在C++中有一个例外:异常处理中的catch中使用引用作参数时,所引用的其实是一个对象的拷贝而不是原对象!!!
在设计函数的参数时考虑上面两个作用,如果只想减少参数传递的开销,而不想实参被函数改动,可以加上const。

2、引用作函数返回值:
引用作函数返回值的作用与引用作函数参数的作用类似。但应注意:
(1)不要返回函数的局部变量的引用。
(2)不要返回函数内部用new初始化的指针的引用。
(3)不要返回对类非公有数据成员的非const引用。
这三点在effective C++(见条款30、31)中讲得很清楚。在设计函数时,如果返回值或实参可能是一个空对象,也应当使用指针而不是引用。

3、不要把表达式或临时变量传递给非const引用参数
void fun1( int &ref );
int fun2();

fun1( 3 ); //错误
fun1( 3 + 3 ); //错误
fun1( fun2() ); //错误

void fun1( const int &ref );
fun1( 3 ); //正确
fun1( 3 + 3 ); //正确
fun1( fun2() ); //正确

四、引用的用处:
引用的用处可以归纳为四点:
(1)在语法上增强可读性。有时候会出现a.b.c.d或xxxx->xxx->xx->x等的一长串的内容,让人写得累,看得也累。这时可以用引用代替它:X &x_ref = xxxx->xxx->xx->x; 这样就可以用x_ref而不是一长串的内容了。

(2)作函数参数和返回值时减少程序开销。

(3)作函数参数和返回值时能让函数直接操作参数或让调用者操作返回值。

(4)作函数参数时避免使用二级指针。指针是非常头痛的东西,二级指针就更容易让人糊涂。而在有些时候,我们要往函数传递指针的地址,就可能用到二级指针,有了引用就可以使用引用指针的引用从而避免使用二级指针了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-08-14
引用 有不有都行
第2个回答  2008-08-15
这是 重载吧
必须引用

那个是引用
&a=b 这个还是引用本回答被提问者采纳
第3个回答  2008-08-15
你都学到重载操作符了.你还不知道 &在这里是引用 .

真让人心寒啊.

在c++里&代表什么?经常在图中这种情况里看到但是不知道怎么用_百度知 ...
在 C++ 语言中,& 运算符有三种含义:(1) 位与运算符,如:int a = 2 & 3; \/\/ 按二进制位与运算,10 & 11 = 10, 所以结果为 10 进制的 2;(2) 取地址运算符,意为取某个变量的地址;(3) 用于定义变量的引用,如:int a = 100;int &b = a; \/\/ 引用必须在定义的时候...

c++ 中“&”这个符号代表什么意思?
指针:int *p=&point; \/\/定义一个指针变量p指向普通变量point的地址;引用:int &rp=point; \/\/建立一个int型的引用rp,并将其初始化为变量point的一个别名。2、运算符:比如 位运算: &表示按位与,“按位与”的作用是将两个操作数对应的每一位分别进行“逻辑与”操作。如:3&5 3 ...

C++ 这个语句中[&]是什么意思
[]:定义匿名函数 [&]:以引用形式捕获所有外部变量,也就是外部变量均可用 (string const &s) :匿名函数的参数 ->:定义匿名函数 unsigned:函数返回值类型 {...}:函数实现体

c++里的&和|是什么意思?
在C语言中,&和|是位运算符,用于操作二进制数。&运算符用于逻辑与运算,表示“与”的关系。例如,0 & 0的结果是0,1 & 0的结果是0,0 & 1的结果是0,1 & 1的结果是1。如果两个操作数的第n位都为1,那么结果的第n位为1;否则,结果的第n位为0。|运算符用于逻辑或运算,表示“或”...

c++中的&表示什么,有什么用呢?
1. & 符号表示“和”或“与”,在英文中相当于 "and" 这个词。2. & 字符的起源可以追溯到公元1世纪,它是拉丁语 "et"(意为“和”)的简写形式。3. 在计算机编程中,& 通常用作取地址符,例如在语句 “int a=0; int *p; p=&a;” 中,它表示获取变量 a 的地址并将其赋值给指针 p...

在程序设计中“&”是什么意思?
C++, XML, SGML, and BASIC)中,“&”代表的意思是 “与”。C++中引用的声明方法:类型标识符 &引用名=目标变量名,&在此不是求地址运算,而是起标识作用。&是一个逻辑语言,是指逻辑上表示两者属于缺一不可的关系,还表示意思是一个人和另外一个人之意,与and同义。如A&B,表示A与B。

C++中 &是什么意思?
1.取地址,如int a;int* b;b=&a;这里取的是a的地址。2.引用,int i;int& a=i;这里相当于int const *a=&i;3.位运算,且的意思,比如0101&0011等于0001;两个均是一才为1,有一个0,即为0;4.&&逻辑且,比如if(i==0&&j==1),就是说i等于0,并且j等于一的时候。

c++后面的&是什么意思?
注意在C++中有一个例外:异常处理中的catch中使用引用作参数时,所引用的其实是一个对象的拷贝而不是原对象!!!在设计函数的参数时考虑上面两个作用,如果只想减少参数传递的开销,而不想实参被函数改动,可以加上const。2、引用作函数返回值:引用作函数返回值的作用与引用作函数参数的作用类似。但应...

c\/ c++中&的作用是什么?
&:在C++中有两种意思,一种是取地址符,是单目运算符;另一种是位运算符,表示“按位与”,是双目运算符。a&b表示a和b执行按位与运算。&后跟一个变量。每个变量对应一个存储空间块。每个存储空间都有一个数字,即地址,&变量名表示取出该代码,而变量名表示取出该编号对应的存储空间中的值。系...

c++里|&&|什么意思?
| & 表示位运算,针对数值进行的运算,例如 3 | 2 、78 & 99,其结果仍然应为值数。|| && 表示逻辑运算,||表示或者的意思,&& 表示并且的意思,例如 33>44 || "abcd"=="abcd",其结果是逻辑值true或false。

相似回答
大家正在搜