Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Гр Хо
1 / 1 / 0
Регистрация: 11.12.2015
Сообщений: 24
#1

Объясните как объявить абстрактный класс, и при этом не тащить виртуальные методы в производные классы - C++

27.12.2015, 14:53. Просмотров 222. Ответов 3
Метки нет (Все метки)

Суть вопроса - есть у меня класс, который я решаю сделать абстрактным. Как я понимаю что бы сделать класс абстрактным необходимо просто приписать ( =0 ) после определения любого виртуального метода этого класса. Этот метод становится чисто виртуальным, тем самым автоматически делая класс абстрактным.
И все бы ничего, но вот только меня смущает, что приходится тащить этот чисто виртуальный метод в производные классы, хотя он мне нужен не во всех производных классах, а только в некоторых...

Подскажите, пожалуйста, как бороться с этой проблемой
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2015, 14:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объясните как объявить абстрактный класс, и при этом не тащить виртуальные методы в производные классы (C++):

Абстрактный класс, виртуальные методы - C++
Учащийся: школьник, студент, аспирант. Каждый учащийся характеризуется: ФИО строки), дата рождения, пол (М/Ж). Школьник дополнительно...

Создать абстрактный базовый класс Figure и производные классы Rectangle, Circle - C++
Создать абстрактный базовый класс Figure с виртуальными методами вычисления площади и периметра. Создать производные классы: Rectangle...

Создать класс - данные - абстрактный базовый класс. Создать производные классы - C++
Всем привет! У меня вот такая проблема.... Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа...

Создать абстрактный класс с виртуальной функцией вычисления нормы и модуля; определить производные классы с собственными функциями - C++
Прошу вашей интеллектуальной помощи) Условие задачи: 16. Создать абстрактный класс Norm с виртуальной функцией вычисления нормы и...

Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle - C++
Создать абстрактный базовый класс Figure с виртуальной функцией -периметр.Создать производные классы Rectangle, Circle,Triangle,Rhomb в...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
rikimaru2013
C++ Game Dev
2435 / 1129 / 240
Регистрация: 30.11.2013
Сообщений: 3,686
27.12.2015, 15:01 #2
сделай чисто вирт деструктор - "тащить" дестр легче, так как он действительно нужен в 95% случаев.
2
hoggy
Нарушитель
6564 / 2745 / 474
Регистрация: 15.11.2014
Сообщений: 6,089
Завершенные тесты: 1
27.12.2015, 19:27 #3
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
сделай чисто вирт деструктор
только не забудьте реализовать его туловище.
что бы не нарваться на ошибки линкера,
или что хуже - рантайма.
2
DrOffset
7136 / 4277 / 964
Регистрация: 30.01.2014
Сообщений: 7,066
27.12.2015, 19:45 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Гр Хо,
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
class AbstractBase
{
public:
    virtual void foo() = 0;
    
    virtual ~AbstractBase() {}
};
 
class NonAbstractBase 
    : public AbstractBase
{
    /*virtual*/ void foo() {} // пустая или реализация "по умолчанию"
};
 
/* Класс, где нужно переопределелять чистовиртуальную функцию */
class NeedAbstract 
    : public AbstractBase
{
public:
    /*virtual*/ void foo() 
    {
        // impl
    }
};
 
/* Класс, где не нужно */
class NotNeedAbstract
    : public NonAbstractBase
{
};
3
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2015, 19:45
Привет! Вот еще темы с ответами:

Создать абстрактный базовый класс с виртуальной функцией - Объем. Создать производные классы: Пирамида, Шар со своими функциями объема - C++
Создать абстрактный базовый класс с виртуальной функцией - Объем. Создать производные классы: Пирамида, Шар со своими функциями объема:...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Абстрактный класс.производные функции - C++
Вот условие задачиСоздать абстрактный класс транспортное средство Trans с методами позволяющим вывести на экран информацию о транспортном...

Абстрактный класс и его производные - C++
Здравствуйте. Мне необходимо построить иерархию классов - базовый абстрактный и два производных. Оба производных класса имеют несколько...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.12.2015, 19:45
Ответ Создать тему
Опции темы

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