Рубрики

Вывод программы C ++ | Набор 11

Предсказать вывод следующих программ на C ++.

Вопрос 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;

}

Вывод: ошибка компилятора в первой строке main (), т. Е. «Point p1;»

Поскольку существует пользовательский конструктор, компилятор не создает конструктор по умолчанию (см. Этот GFact ). Если мы удалим конструктор копирования из класса Point, программа будет работать нормально и выводит результат в виде «x = 10, y = 20»

вопрос 2

#include<iostream>

using namespace std;

  

int main()

{

    int *ptr = new int(5);

    cout << *ptr;

    return 0;

}

Выход: 5
Новый оператор также может инициализировать примитивные типы данных. В приведенной выше программе значение по адресу «ptr» инициализируется как 5 с использованием оператора new.

Вопрос 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;

}

Выход: 7/9
Методы Num () и Den () возвращают ссылки на num и den соответственно. Поскольку ссылки возвращаются, возвращаемые значения могут использоваться как lvalue, а закрытые члены den и num модифицируются. Программа компилируется и работает нормально, но такой дизайн классов настоятельно не рекомендуется (см. Это ). Возвращение ссылки на приватную переменную позволяет пользователям класса напрямую изменять приватные данные, что отрицательно сказывается на цели инкапсуляции.

Пожалуйста, пишите комментарии, если вы найдете какие-либо неправильные ответы / объяснения, или вы хотите поделиться дополнительной информацией по темам, обсужденным выше.

Рекомендуемые посты:

Вывод программы C ++ | Набор 11

0.00 (0%) 0 votes