El entrevistador me mostró un código como este y me preguntó si se compilaría, y daría mi razonamiento. Le dije con toda certeza que no compilaría, porque 10 es una constante y no se puede asignar una constante a una referencia no constante (como int & b = 10 no se compilará), también, _a es una variable temporal y es también se considera const, de nuevo, no se puede usar la referencia no constante para referir una variable const.¿Por qué compila esto? Esperando "no se puede asignar una constante a una referencia no const"
Sin embargo, después de llegar a casa para mi sorpresa, me pareció compilar perfectamente con todos los compiladores posibles. Además, no conseguí el trabajo. ¿Qué parte de mi entendimiento salió mal?
class A {
int& a;
public:
A(int _a):a(_a) {}
};
int main() {
A a(10);
}
¿Cuál era el puesto para el que estaba entrevistando? Si es algo más que construir un analizador de C++, diría que probablemente sea ridículo tener que conocer cada rincón oscuro de C++ como este. – Mysticial
Tengo la impresión de que los entrevistadores ponen demasiado énfasis en conocer los rincones oscuros del idioma y no lo suficiente en las habilidades de diseño y mejores prácticas. –
@Mysticial: este es un escollo común para los nuevos desarrolladores ya que este código parecerá funcionar al principio pero fallará en un punto aleatorio (después de una llamada a la función). – Dani