Рубрики

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

Уровень сложности: Новичок

Прогнозировать выход программ C ++, указанных ниже.

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

}

Выход: 10
Если оператор разрешения области действия помещен перед именем переменной, то указывается глобальная переменная. Поэтому, если мы удалим следующую строку из вышеуказанной программы, то она не будет выполнена при компиляции.

  int x = 10;

вопрос 2

#include<iostream>

using namespace std;

class Point {

private:

    int x;

    int y;

public:

    Point(int i, int j);  // Конструктор

};

  

Point::Point(int i = 0, int j = 0)  {

    x = i;

    y = j;

    cout << "Constructor called";

}

  

int main()

{

   Point t1, *t2;

   return 0;

}

Вывод: конструктор вызван.
Если мы более внимательно посмотрим на утверждение «Точка t1, * t2 ;:», то увидим, что здесь построен только один объект. t2 — это просто переменная-указатель, а не объект.

Вопрос 3

#include<iostream>

using namespace std;

  

class Point {

private:

    int x;

    int y;

public:

    Point(int i = 0, int j = 0);    // Нормальный конструктор

    Point(const Point &t); // Копировать конструктор

};

  

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;

}

Выход:
Нормальный конструктор называется
Конструктор копирования называется
Конструктор копирования называется
Нормальный конструктор называется

Смотрите следующие комментарии для объяснения:

Point *t1, *t2;   // Нет вызова конструктора

t1 = new Point(10, 15);  // Нормальный вызов конструктора

t2 = new Point(*t1);   // Копировать вызов конструктора

Point t3 = *t1;  // Копировать вызов конструктора

Point t4;   // Нормальный вызов конструктора

t4 = t3;   // Назначение оператора вызова

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

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

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

0.00 (0%) 0 votes