第一条已经有网友答了
关于引用这个
引用的符号是&,但是&在一些场合表示的是引用,一些场合表示的是取地址的意思,
在C/C++都是这样的。
那么什么时候表示引用呢,引用就是对一个对象的引用,说白一点就是给一个已存在的
对象起了个别名,比如
int a = 3;
int& b = a;
这个时候b和a是等价的,完全一模一样的,只是叫了个不同的名字,就想有个人
叫李明,他小名叫小明,小明和李明都是同一个人。
表示取地址的意思就是字面上的意思,取一个对象的地址了
比如
int a = 3;
&a就是取a这个变量的地址,
int* b;
b = &a;
这里就定义了一个int指针,然后让它指向a的地址。
两个场景的用法差别是很大的。
引用必须在声明时就指定引用的对象,比如 这样的声明就是错误的 int& b;
取地址就是得到指定对象的地址,一般就是把它赋值给一个指针对象,让指针和对象关联。
朋友,请【采纳答案】,您的采纳是我答题的动力,如果没有明白,请追问。谢谢。
引用和拷贝构造函数没必然关系,引用是数据访问的一种方式,拷贝构造函数是类的一个接口。如果要了解为什么在拷贝构造函数中使用引用,必须了解拷贝构造函数及函数调用时编译器如何处理传参的。函数调用从实参进入函数变成形参,会复制对象(浅拷贝),形参在函数结束时会被丢弃,进入函数会进行复制操作,重复复制没必要,所以用引用。
1、c#不懂。
c++的复制构造函数类似于c语言中的初始化或者赋值
int a = 2;
int b = a; //这是c语言中的初始化
int c;
c = a; //这是c语言中的赋值。
因此在c++中复制构造函数即要有一个复制构造函数,还要重载=操作符。
c++中的复制构造函数,本质上就是对c语言的扩充。
2、引用 和地址调用,无论c/c++都可以用&取地址,这是一个基本的运算符。引用本质上就是一个const型的指针。
第一条是的 用处基本一样
第二条的话 C++默认是值传递,所以要引用的话 必须加&
c#对象类型默认是引用传递 ,所以&基本是用不到的
c++里 func(classA & ca)和
C# 里 func(classA ca) 基本用途一致