Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
ChadloveMary
2 / 5 / 1
Регистрация: 13.09.2015
Сообщений: 100
1

Создать полиморфный объект и продемонстрировать работу функций

11.09.2016, 20:49. Просмотров 1147. Ответов 4

Есть классы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class A {
public:
    virtual void f() {}
};
 
class B : public A {
public:
    void f() {
        cout << "B::f" << endl;
    }
};
 
class C : public A {
public:
    void f() {
        cout << "C::f" << endl;
    }
};
И задание: создать полиморфный объект и продемонстрировать работу функций.
Не могу понять как это должно работать

Так?

C++
1
2
3
4
5
6
A *a = new B();
a->f();
delete a;
a = new C();
a->f();
delete a;
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2016, 20:49
Ответы с готовыми решениями:

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

На базе набора функций создать полиморфный класс
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;windows.h&gt; #include &lt;iomanip&gt; using namespace...

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

Продемонстрировать работу стандартной функции
char *strncpy(char *s1, const char *s2, size_t n); Копирует не более n символов из строки s2 в s1...

Продемонстрировать работу алгоритмов STL copy, и max_element
есть задания 1)Создайте пустой целочисленный вектор и поместите в него 10 случайных чисел с...

4
Fulcrum_013
Нарушитель
1881 / 1340 / 146
Регистрация: 14.12.2014
Сообщений: 11,626
Завершенные тесты: 3
11.09.2016, 21:08 2
ну в общем то идея именно такая.
1
Avazart
Эксперт С++
7951 / 5772 / 571
Регистрация: 10.12.2010
Сообщений: 26,501
Записей в блоге: 17
11.09.2016, 21:20 3
Лучший ответ Сообщение было отмечено ChadloveMary как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
std::vector<A*> va;
/* Разные объекты в одном контейнере приведенные к указателю на базовый класс*/
va.push_back(new A);
va.push_back(new B);
va.push_back(new C);
 
for(std::size_t i=0;  i <v.size(); ++i)
{
    va[i]->f();
    delete va[i];
}
va.clear();
2
ChadloveMary
2 / 5 / 1
Регистрация: 13.09.2015
Сообщений: 100
11.09.2016, 21:26  [ТС] 4
Avazart, кек, сложна
А вот в clear() там типо деструктор вызывается? Где это можно глянуть, прост интересно
0
Avazart
Эксперт С++
7951 / 5772 / 571
Регистрация: 10.12.2010
Сообщений: 26,501
Записей в блоге: 17
11.09.2016, 21:36 5
Цитата Сообщение от ChadloveMary Посмотреть сообщение
Avazart, кек, сложна
А вот в clear() там типо деструктор вызывается? Где это можно глянуть, прост интересно
Деструктор я сразу вызываю, в цикле delete va[i];
clear()- удаляет сами указатели из вектора.

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

Другой вариант со ссылками:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void f(A& a)
{
   a.f();
}
 
int main()
{
  A a;
  B b;
  C c;
 
  /* Единообразный подход к объектам разных классов: */
  f(a);
  f(b);
  f(c);
 
  return 0;
}
A::f
B::f
C::f
0
11.09.2016, 21:36
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2016, 21:36

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

Создать класс с перегруженными функциями и продемонстрировать различные способы наследования
* Задача: создать класс с различными (по типу доступа) членами, перегруженными функциями и...

Продемонстрировать работу функций Copy, EndsWith, ToLower
Продемонстрировать работу таких функций : Copy, EndsWith, ToLower


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.