Рубрики

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

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

Вопрос 1

#include <iostream>

using namespace std;

  

class A

{

public:

    void print() { cout << "A::print()"; }

};

  

class B : private A

{

public:

    void print() { cout << "B::print()"; }

};

  

class C : public B

{

public:

    void print() { A::print(); }

};

  

int main()

{

    C b;

    b.print();

}

Вывод: ошибка компилятора: «A» не является доступной базой «C»
Существует многоуровневое наследование в приведенном выше коде. Обратите внимание на спецификатор доступа в «классе B: частный A». Поскольку используется спецификатор частного доступа, все члены «A» становятся частными в «B». Класс «C» является унаследованным классом «B». Унаследованный класс не может получить доступ к закрытым членам данных родительского класса, но print () из 'C' пытается получить доступ к закрытому члену, поэтому мы получаем ошибку.

вопрос 2

#include<iostream>

using namespace std;

  

class base

{

public:

    virtual void show()  { cout<<" In Base \n"; }

};

  

class derived: public base

{

    int x;

public:

    void show() { cout<<"In derived \n"; }

    derived()   { x = 10; }

    int getX() const { return x;}

};

  

int main()

{

    derived d;

    base *bp = &d;

    bp->show();

    cout << bp->getX();

    return 0;

}

Вывод: ошибка компилятора: в базе классов нет члена с именем getX
В вышеприведенной программе есть указатель «bp» типа «base», который указывает на объект производного типа. Вызов show () через 'bp' хорошо, потому что show () присутствует в базовом классе. Фактически, он вызывает производный класс «show ()», потому что «show ()» является виртуальным в базовом классе. Но вызов getX () недопустим, потому что getX () отсутствует в базовом классе. Когда указатель базового класса указывает на объект производного класса, он может получить доступ только к тем методам производного класса, которые присутствуют в базовом классе и являются виртуальными.

Вопрос 3

#include<iostream>

using namespace std;

  

class Test

{

    int value;

public:

    Test(int v = 0) { value = v; }

    int getValue()  { return value; }

};

  

int main()

{

    const Test t;

    cout << t.getValue();

    return 0;

}

Вывод: ошибка компилятора
В приведенной выше программе объект 't' объявлен как объект const. Константный объект может вызывать только константные функции. Чтобы исправить ошибку, мы должны сделать getValue () константной функцией.

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

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

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

0.00 (0%) 0 votes