referencia de función

1. Revisión de referencias

Cita

    Asigne otro nombre al objeto (la referencia es un alias)
1. No se puede hacer referencia directa a las constantes (valores literales)
doble & d = 12.3; //
Razón del error: d = 111, es decir, se cambia el valor originalmente referenciado por d. Viola el concepto básico de constantes.

Si desea hacer referencia:
//Referencia a constante – legal
const double & d = 12.3;

int int_value = 1024;

//refValue指向int_value,是int_value的另一个名字
int & refValue  = int_value;

//错误 :引用必须被初始化
int & refValue2;

El uso de referencias no requiere probar su validez , por lo que usar referencias es más eficiente que los punteros.

Nota:
1. Una referencia no es un objeto, es solo un alias de un objeto existente.
2. Una referencia está más cerca de un puntero constante. Una vez asociada con una variable, siempre será leal a ella.
3. Cuando se utilizan variables de referencia como parámetros, la función utilizará los datos originales en lugar de una copia.
4. Cuando la memoria ocupada por los datos es relativamente grande, se recomienda utilizar parámetros de referencia.

Ejemplo de código
Razones para usar referencias:
    1. Puede facilitar la escritura de código
    2. Puede pasar un objeto directamente en lugar de copiarlo Nota
1. El uso de const
    en los parámetros de referencia puede evitar la modificación involuntaria de los parámetros     2. Sugerencias de parámetros de referencia Utilice constante siempre que sea posible

2. Referencia de devolución

1. Tipo de referencia de retorno de función

Nota
    1. No devuelva referencias a variables locales.
    2. La función no necesita devolver un valor. Cuando no devuelve un valor, devolverá el objeto de referencia pasado de forma predeterminada.
    3. Al devolver una referencia, el Se requieren parámetros de función para contener el objeto de referencia devuelto.

explicar:

   1. No devolver referencias a variables locales.

#include <iostream>

using namespace std;

int & sum(){
    int num = 10;
    int & rNum = num;
    return rNum;//f返回了一个局部变量的引用类型变量
}
/**
注意:rNum是在sum()中定义的,所以叫局部变量
    rNum的生存期只在sum()中!!

    函数中的局部变量会被内存回收,
    所谓的内存回收,并不是把内存保存的设置清零,
    而是指内存中你的程序申请的这块内存已经不是你的了!
*/
void test(){
    int x = 1;
    int y = 2;
}

int main()
{
	//result在这里引用了一个局部变量
    int & result = sum();
    test();
    cout << "result = " << result << endl;
    return 0;
}
输出结果:
result = 2

Análisis:
la memoria de las variables locales en suma se recicla y reutiliza, lo que resulta en la reasignación por parte de otros objetos .

   2. Las funciones no pueden devolver valores. De forma predeterminada, devuelven el propio objeto de referencia pasado.

#include <iostream>

using namespace std;

int & sum1(int & num1,int &num2){
    num1++;
    num2++;
}

int & sum2(int & num1,int &num2){
    num1++;
    num2++;
    return num1;
}
int & sum3(int & num1,int &num2){
    num1++;
    num2++;
    return num1 + num2;	//此句报错,相当于返回第三个未定义的引用变量
    									//未返回函数中包含的引用对象
}
int main()
{   int x = 10;
    int y = 20;
    int & result1 = sum1(x,y);
    cout << "result1 = " << result1 << endl;        //21
    int & result2 = sum2(x,y);
    cout << "result2 = " << result2 << endl;        //12
    return 0;
}
结果:
result1 = 21
result2 = 12

Explicación: Cuando una referencia no devuelve un valor, se devuelve la última referencia de forma predeterminada.

   3. Al devolver una referencia, los parámetros de la función deben contener el objeto de referencia devuelto.

Explicar suma3() en 2

2. Devuelve el valor l y el valor r en la referencia.

int & sum4(int & num){
    return num;
}

int main()
{
    int n = 10;
    int numX = 15;
    int & result4 = sum4(numX);
    sum4(numX) = 55;
    cout << "result4 = " << result4 << endl;        //55
结果:
result = 55

sum4(numX) = 55 puede verse como sum4(numX) es una referencia a 55

Soluciones sugeridas:
    1. Cambie el tipo de valor de retorno a const int &

const int &sum(int & num){
	//......
}

    2. El tipo constante es un valor l que no se puede modificar.
suma (núm) = 55; será ilegal
    3. Omitir const hará que el significado de la función sea más ambiguo. Se recomienda evitar la ambigüedad en la función de diseño, porque la ambigüedad aumentará las posibilidades de cometer errores y se deben evitar los errores. cuanto más se pueda.

valor l y valor r

3. Resumen del uso de parámetros de referencia.

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/X_King_Q/article/details/104467174
Recomendado
Clasificación