Salida del programa C++ | conjunto 11

Prediga la salida de los siguientes programas C++.

Pregunta 1

#include<iostream>
using namespace std;
  
class Point
{
private:
    int x;
    int y;
public:
    Point(const Point&p) { x = p.x; y = p.y; }
    void setX(int i) {x = i;}
    void setY(int j) {y = j;}
    int getX() {return x;}
    int getY() {return y;}
    void print() { cout << "x = " << getX() << ", y = " << getY(); }
};
  
  
int main()
{
    Point p1;
    p1.setX(10);
    p1.setY(20);
    Point p2 = p1;
    p2.print();
    return 0;
}

Salida: Error del compilador en la primera línea de main(), es decir, «Punto p1;»

Dado que hay un constructor definido por el usuario, el compilador no crea el constructor predeterminado (consulte este GFact ). Si eliminamos el constructor de copia de la clase Point, el programa funciona bien e imprime la salida como «x = 10, y = 20»

Pregunta 2

#include<iostream>
using namespace std;
  
int main()
{
    int *ptr = new int(5);
    cout << *ptr;
    return 0;
}

Salida: 5
El operador new también puede inicializar tipos de datos primitivos. En el programa anterior, el valor en la dirección ‘ptr’ se inicializa como 5 usando el operador new.

Pregunta 3

#include <iostream>
using namespace std;
  
class Fraction
{
private:
    int den;
    int num;
public:
   void print() { cout << num << "/" << den; }
   Fraction() { num = 1; den = 1; }
   int &Den() { return den; }
   int &Num() { return num; }
};
  
int main()
{
   Fraction f1;
   f1.Num() = 7;
   f1.Den() = 9;
   f1.print();
   return 0;
}

Salida: 7/9
Los métodos Num() y Den() devuelven referencias a num y den respectivamente. Dado que se devuelven las referencias, los valores devueltos se pueden usar como un lvalue y se modifican los miembros privados den y num. El programa se compila y funciona bien, pero se desaconseja enfáticamente este tipo de diseño de clases (Ver esto ). Devolver la referencia a la variable privada permite a los usuarios de la clase cambiar los datos privados directamente, lo que anula el propósito de la encapsulación.

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *