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

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

Войти
Регистрация
Восстановить пароль
 
Raphael92
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 154
#1

Абстрактные и производные классы - C++

14.11.2011, 16:46. Просмотров 508. Ответов 8
Метки нет (Все метки)

Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа сигнал, данные типа результат обработки и вспомогательные данные. Все данные имеют функции отображения, сохранения и обработки. Благодарю за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2011, 16:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Абстрактные и производные классы (C++):

Абстрактные и производные классы С++ - C++
Проблема: Есть базовый класс "Фигура", и производные: "Точка", "Круг", "Прямоугольник", "Треугольник". Надо сделать чистую виртуальную...

Наследование, базовые классы и производные классы - C++
Добрый вечер.Задание: необходимо разработать поля и методы наследуемые из базового класса и собственные компоненты производных...

абстрактные классы - C++
Здрасте я при написании программы столкнулся с проблемой что немогу создать указатель на объект т.к. класс абстрактный прошу помогите...

Абстрактные классы - C++
void _tmain() { const int lim = 100; MyFunction *pFunc ; int count = 0; pFunc = new My_Exp; pFunc = new Line; pFunc...

Абстрактные классы - C++
Объясните пожалуйста почему это не работает и как исправить? cannot declare variable 'b1' to be of abstract type 'classB' because the...

абстрактные классы - C++
компилятор ругается когда я пытаюсь записать объект класса!!!! подскажите что я не правильно делаю!! #include <cstdlib> #include...

8
Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
14.11.2011, 17:04 #2
Вроде так:
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
class data
{
     virtual void  showSomthing () {}
     virtual void  saveSomthing () {}
     virtual void  doSomthing () {}
};
 
class signal  : public data
{
    virtual void  showSomthing () {}
    virtual void  saveSomthing () {}
    virtual void  doSomthing () {}
};
 
class result  : public data
{
    virtual void  showSomthing () {}
    virtual void  saveSomthing () {}
    virtual void  doSomthing () {}
};
 
class subsidiaryData  : public data
{
    virtual void  showSomthing () {}
    virtual void  saveSomthing () {}
    virtual void  doSomthing () {}
};
 
int main()
{
    data* pSignal = new signal();
    data* pResult = new result();
    data* pSubsidiaryData = new subsidiaryData();
    return 0;
}
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
14.11.2011, 17:14 #3
Dar101, Абстрактный подразумевает под собой, что имеется хотя бы одна чисто-виртуальная функция.
1
Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
14.11.2011, 17:19 #4
ForEveR, я подразумевал, что все три функции в классе data чисто-виртуальные.
Вот так точнее:
C++
1
2
3
     virtual void  showSomthing ()=0;
     virtual void  saveSomthing ()=0;
     virtual void  doSomthing ()=0;
Теперь верно?
*Спасибо за замечание.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
14.11.2011, 17:25 #5
Dar101, А почему они все закрытые? Как использовать-то? В public забыли поместить.
0
Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
14.11.2011, 17:29 #6
Цитата Сообщение от ForEveR Посмотреть сообщение
Dar101, А почему они все закрытые? Как использовать-то? В public забыли поместить.
Да, забыл, тяжело пока писать код, не проверяя запуском.

Стоит ли в дочерних классах писать virtual? Вроде можно и так и так, но по правилам хорошего кода всё-таки?
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
class data
{
public:
     virtual void  showSomthing ()=0;
     virtual void  saveSomthing ()=0;
     virtual void  doSomthing ()=0;
};
 
class signal  : public data
{
public:
    virtual void  showSomthing () {}
    virtual void  saveSomthing () {}
    virtual void  doSomthing () {}
};
 
class result  : public data
{
public:
    virtual void  showSomthing () {}
    virtual void  saveSomthing () {}
    virtual void  doSomthing () {}
};
 
class subsidiaryData  : public data
{
public:
    virtual void  showSomthing () {}
    virtual void  saveSomthing () {}
    virtual void  doSomthing () {}
};
 
int main()
{
    data* pSignal = new signal();
    data* pResult = new result();
    data* pSubsidiaryData = new subsidiaryData();
    return 0;
}
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
14.11.2011, 17:32 #7
Dar101, Не суть. Виртуального деструктора не наблюдаю - зря.
0
Dar101
40 / 40 / 1
Регистрация: 12.05.2011
Сообщений: 109
14.11.2011, 17:39 #8
Да, еще одна ошибка. Поправил. Так? Проверка показывает, что всё ок.
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
#include <iostream>
class data
{
public:
    virtual void  showSomthing ()=0;
    virtual void  saveSomthing ()=0;
    virtual void  doSomthing ()=0;
    virtual ~data() {std::cout << "data deleted" << std::endl;}
};
 
class signal  : public data
{
public:
    virtual void  showSomthing () {}
    virtual void  saveSomthing () {}
    virtual void  doSomthing () {}
    ~signal() {std::cout << "signal deleted"<< std::endl;}
};
 
class result  : public data
{
public:
    virtual void  showSomthing () {}
    virtual void  saveSomthing () {}
    virtual void  doSomthing () {}
};
 
class subsidiaryData  : public data
{
public:
    virtual void  showSomthing () {}
    virtual void  saveSomthing () {}
    virtual void  doSomthing () {}
};
 
int main()
{
    data* pSignal = new signal();
    delete pSignal;
    data* pResult = new result();
    data* pSubsidiaryData = new subsidiaryData();
    system("pause");
    return 0;
}
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
14.11.2011, 17:46 #9
Dar101, Да ок.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2011, 17:46
Привет! Вот еще темы с ответами:

Абстрактные классы - C++
Помогите плиз, экзаменационное задание, а разобраться не могу с ним: Создать консольное приложение, в котором реализовать работу...

Абстрактные классы - C++
Помогите пожалуйста, сообразить не могу. Есть абстрактный класс. У него есть метод, чтение из файла. Есть производный от него класс....

Абстрактные классы - C++
Никак не могу понять смысл абстрактных данных.Ведь мы можем использовать и обычный класс,только абстракция запрещает создавать объекты.

Абстрактные классы - C++
Народ, вопрос есть такой. Есть абстрактный класс class A { protected: int a; public: A(int b=0):a(b) {


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

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

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