引用调用是C++特有的概念,它是程序设计语言发展的产物。

C++提供的引用应用于函数既满足使用时的简单方便,又保证执行的效率。C和C++的函数调用的主要区别是C++中使用了引用调用。
引用调用是函数传递参数的一种方式,使用引用调用,可以在子函数中对形参所做的更改对主函数中的实参有效。
引用可以看成是一种特殊类型的变量可以被认为是另一个变量的别名,就好比人的绰号一样,虽然名字不同,但所指向的人是一样的,所以引用还与指针有类似的地方。
刚好遇到同样问题,已经解决,我来回答一下吧。首先,要知道两个概念:
1.窗体FORM也是一个类,所以可以实例化。
2.C#里面除了基本类型是值传递,其他都是引用传递。然后写方法。
第一步:将需要调用的控件Modified属性设为Public,这样才能在自定义类中使用。在Designer.cs文件里找到控件,将Private改成Public具有同样效果。
第二步:在实例化自定义类时,把当前窗体以参数形式传给自定义类。
第三步:在自定义类里面新建一个窗体(这个窗体实际上也是一个类),然后将参数传来的窗体赋予这个窗体类,这时就可以使用这个新建窗体类里面所有的Public的控件了。tip:这里涉及到上面两个概念,自行理解吧。还可以用监听器,方法暂时该不会,会了以后回来再增加。
不用引用将是按值传递,按值传递会(在函数调用堆栈上)产生一份实参值的副本,因此在被调函数中不会对原始数据造成任何影响,因为修改的是副本,而不是原始数据。 用引用将是按引用传递,按引用传递使得被调函数可以直接访问原始数据,在被调函数中修改的数据是原始数据。
实参(被调)、行参(主调)
函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
是把实参的值赋值给行参,相当于复制一块同样的空间那么对行参的修改,不会影响实参的值
是传值的一种特殊方式,只是他传递的是地址,不是普通的如int那么传地址以后,实参和行参都指向同一个对象--传引用:
真正的以地址的方式传递参数
传递以后,行参和实参都是同一个对象,只是他们名字不同而已对行参的修改将影响实参的值
即传址时只需在函数调用时在参数的前面加上"&"号即可。将函数外部的值的内存地址传递给内部的参数,在函数内部的所有操作都会改变函数外部参数的值。
值传递(passl-by-value): 压栈的是参数的副本。任何的修改是在副本上作用,没有作用在原来的变量上。
过程中:被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
传指针(pointer): 压栈的是指针变量的副本。当你对指针解指针操作时,其值是指向原来的那个变量,所以对原来变量操作。
引用传递(pass-by-reference):压栈的是引用的副本。由于引用是指向某个变量的,对引用的操作其实就是对他指向的变量的操作。
过程中:被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。
所谓值传递,就是说仅将对象的值传递给目标对象,就相当于copy;系统将为目标对象重新开辟一个完全相同的内存空间。
所谓引用,就是说将对象在内存中的地址传递给目标对象,就相当于使目标对象和原始对象对应同一个内存存储空间。如果对目标对象进行修改,内存中的数据也会改变。