Nivel de dificultad: Novato
Prediga la salida de los siguientes programas de C++.
Pregunta 1
#include<iostream> using namespace std; int x = 10; void fun() { int x = 2; { int x = 1; cout << ::x << endl; } } int main() { fun(); return 0; }
Salida: 10
Si el Operador de resolución de ámbito se coloca antes de un nombre de variable, se hace referencia a la variable global. Entonces, si eliminamos la siguiente línea del programa anterior, fallará en la compilación.
int x = 10;
Pregunta 2
#include<iostream> using namespace std; class Point { private: int x; int y; public: Point(int i, int j); // Constructor }; Point::Point(int i = 0, int j = 0) { x = i; y = j; cout << "Constructor called"; } int main() { Point t1, *t2; return 0; }
Salida: Constructor llamado.
Si echamos un vistazo más de cerca a la declaración «Punto t1, *t2;:», entonces podemos ver que aquí solo se construye un objeto. t2 es solo una variable de puntero, no un objeto.
Pregunta 3
#include<iostream> using namespace std; class Point { private: int x; int y; public: Point(int i = 0, int j = 0); // Normal Constructor Point(const Point &t); // Copy Constructor }; Point::Point(int i, int j) { x = i; y = j; cout << "Normal Constructor called\n"; } Point::Point(const Point &t) { y = t.y; cout << "Copy Constructor called\n"; } int main() { Point *t1, *t2; t1 = new Point(10, 15); t2 = new Point(*t1); Point t3 = *t1; Point t4; t4 = t3; return 0; }
Salida:
Constructor normal llamado
Constructor de copia llamado Constructor de
copia llamado Constructor
normal llamado
Consulte los siguientes comentarios para obtener una explicación:
Point *t1, *t2; // No constructor call t1 = new Point(10, 15); // Normal constructor call t2 = new Point(*t1); // Copy constructor call Point t3 = *t1; // Copy Constructor call Point t4; // Normal Constructor call t4 = t3; // Assignment operator call
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