Рубрики

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

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

Вопрос 1

#include<iostream>

using namespace std;

  

class Base 

{

public:

    int fun()      { cout << "Base::fun() called"; }

    int fun(int i) { cout << "Base::fun(int i) called"; }

};

  

class Derived: public Base 

{

public:

    int fun(char x)   { cout << "Derived::fun(char ) called"; }

};

  

int main() 

{

    Derived d;

    d.fun();

    return 0;

}

Вывод: ошибка компилятора.
В приведенной выше программе fun () базового класса недоступна в производном классе. Если производный класс создает метод-член с именем, совпадающим с одним из методов базового класса, то все методы базового класса с этим именем становятся скрытыми в производном классе (подробнее см. В этом разделе)

вопрос 2

#include<iostream>

using namespace std;

class Base 

{

   protected:

      int x;

   public:

      Base (int i){ x = i;}

};

  

class Derived : public Base 

{

   public:

      Derived (int i):x(i) { }

      void print() { cout << x ; }

};

  

int main()

{

    Derived d(10);

    d.print();

}

Вывод: ошибка компилятора
В приведенной выше программе x защищен, поэтому он доступен в производном классе. Конструктор производного класса пытается использовать список инициализаторов для непосредственной инициализации x, что недопустимо, даже если x доступен. Члены базового класса могут быть инициализированы только через вызов конструктора базового класса. Ниже приведена исправленная программа.

#include<iostream>

using namespace std;

class Base {

   protected:

      int x;

   public:

      Base (int i){ x = i;}

};

  

class Derived : public Base {

   public:

      Derived (int i):Base(i) { }

      void print() { cout << x; }

};

  

int main()

{

    Derived d(10);

    d.print();

}

Выход:

 10 

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

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

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

0.00 (0%) 0 votes