1 / 1 / 0
Регистрация: 30.09.2017
Сообщений: 30
1

Организация виртуальной функции

13.06.2018, 20:05. Показов 467. Ответов 1

Уже выполненное задание:

Дан класс:
C++
1
2
3
4
class Base
{   public:
virtual void myname() { cout << "This is class Base" << endl; }
};
От него нужно сделать два класса-наследника DerA и DerB. От этих классов методом множественного наследования класс DerAB.
Переделать для каждого класса функцию myname чтобы она выводила имя этого класса. Создать элемент каждого класса и вызвать для него функцию myname.

Теперь то, что я не понимаю как сделать:

Создать массив из 4 указателей на базовый класс иерархии. Для каждого из них создать динамический обьект, по одному для каждого класса. Создать вызов функции myname для каждого из динамических обьектов с помощью указателей.

Не понимаю как организовать это массивом и почему компилятор ругается в строках
C++
1
2
h=&ab;
h->myname();
Весь код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <fstream>
using namespace std;
 
class Base
{   public:
    virtual void myname() { cout << "This is class Base" << endl; }
};
 
class DerA: public Base
{
    public:
    void myname() { cout << "This is class DerA" << endl; }
};
 
class DerB: public Base
{
    public:
    void myname() { cout << "This is class DerB" << endl; }
};
 
class DerAB: public DerA, public DerB
{
    public:
    void myname() { cout << "This is class DerAB" << endl; }
};
 
int main(){
    Base base, *v, *s, *c, *h;
        base.myname();
    DerA a;
        a.myname();
    DerB b;
        b.myname();
    DerAB ab;
        ab.myname();
    v=&base;
    v->myname();
    s=&a;
    s->myname();
    c=&b;
    c->myname();
    h=&ab;
    h->myname();
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2018, 20:05
Ответы с готовыми решениями:

организация виртуальной памяти
Помогите плиз с задачей.... Смоделировать работу системы, которая использует страничную...

Добавление виртуальной функции
Добрый вечер, требуется показать работу виртуальной функции в данной задаче... Что и как можно тут...

Переопределение виртуальной функции
Всем доброй ночи :) Есть базовый абстрактный класс и два производных класса (А и В), в которых я...

Вызов виртуальной функции
Здравствуйте, есть код: #include &lt;iostream&gt; using namespace std; class A{ public: virtual...

1
1463 / 1005 / 455
Регистрация: 30.10.2017
Сообщений: 2,793
13.06.2018, 21:06 2
Sasha0001, могу предположить, что компилятор не может определить через DerA или через DerB работать с Base, так как они оба являются наследниками Base.

43я строка
C++
1
h = (DerA*)&ab;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2018, 21:06
Помогаю со студенческими работами здесь

Смысл виртуальной функции?
Добрый день, вопрос состоит в следующем, какой вообще смысл иметь виртуальную функцию? ну точней,...

Наследование. Переопределение виртуальной функции
Здравствуйте. Нужно создать классы, наследование. Переопределить для каждого класса виртуальную...

НЕнаследование чисто виртуальной функции
Доброго времени суток ! Есть абстрактный класс A с одной чисто виртуальной функцией. Есть два...

Потеря значения в виртуальной функции
Подскажите что не так, вывод должен быть 1 и 5. class cBase { public: int i, f; virtual...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru