Prediga la salida de los siguientes programas de C++.
Pregunta 1
#include<iostream> using namespace std; class Test { int value; public: Test (int v = 0) {value = v;} int getValue() { return value; } }; int main() { const Test t; cout << t.getValue(); return 0; }
Salida: Error del compilador.
Un objeto const no puede llamar a una función que no sea const. El código anterior se puede arreglar haciendo que getValue() sea constante o haciendo que t no sea constante. El siguiente es un programa modificado con getValue() como const, funciona bien e imprime 0.
#include<iostream> using namespace std; class Test { int value; public: Test (int v = 0) { value = v; } int getValue() const { return value; } }; int main() { const Test t; cout << t.getValue(); return 0; }
Pregunta 2
#include<iostream> using namespace std; class Test { int &t; public: Test (int &x) { t = x; } int getT() { return t; } }; int main() { int x = 20; Test t1(x); cout << t1.getT() << " "; x = 30; cout << t1.getT() << endl; return 0; }
Salida: Error del compilador
Dado que t es una referencia en Prueba, debe inicializarse utilizando la Lista de inicializadores. A continuación se muestra el programa modificado. Funciona e imprime “20 30”.
#include<iostream> using namespace std; class Test { int &t; public: Test (int &x):t(x) { } int getT() { return t; } }; int main() { int x = 20; Test t1(x); cout << t1.getT() << " "; x = 30; cout << t1.getT() << endl; return 0; }
Escriba comentarios si encuentra que alguna de las respuestas/explicaciones es incorrecta, o si desea compartir más información sobre los temas discutidos anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA