por - punteros c++
En C++, ¿es seguro ampliar el alcance a través de una referencia? (3)
El único lugar en el que está bien extender un ámbito con una referencia es con una referencia const
en el namespace
de namespace
o en el alcance de la función (no con los miembros de la clase).
const int & cir = 1+1; // OK to use cir = 2 after this line
Este truco se utiliza en el protector de alcance muy fresco de Andrei Alexandrescu para capturar una referencia const
a una clase base del protector de alcance concreto.
En C ++, ¿es seguro ampliar el alcance a través de una referencia?
En código, lo que quiero decir es:
MyCLass& function badIdea()
{
MyClass obj1;
...
return obj1;
}
Por favor, aclara lo que quieres decir.
Asumiendo que tiene la intención de hacer esto:
int * p = NULL;
{
int y = 22;
p = &y;
}
*p = 77; // BOOM!
Entonces, no, en absoluto, el alcance no se extiende al tener una referencia.
Es posible que desee buscar punteros inteligentes, por ejemplo, de las bibliotecas de impulso: clickety
NO es seguro ampliar el alcance por referencia. Los objetos en C ++ no se contabilizan como referencias cuando obj1 sale del alcance, se eliminarán, y el resultado de badIdea () solo te generará problemas