Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Raphael92
0 / 0 / 1
Регистрация: 12.10.2010
Сообщений: 154
#1

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

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


http://www.cyberforum.ru/cpp-beginners/thread1003517.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2011, 16:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Абстрактные и производные классы (C++):

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

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

Абстрактные классы
Есть 3 абстракции, линия(бесконечная), луч(бесконечен в одну сторону) и отрезок...

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

Абстрактные классы
Объясните пожалуйста почему это не работает и как исправить? cannot declare...

8
Dar101
40 / 40 / 7
Регистрация: 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
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
14.11.2011, 17:14 #3
Dar101, Абстрактный подразумевает под собой, что имеется хотя бы одна чисто-виртуальная функция.
1
Dar101
40 / 40 / 7
Регистрация: 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
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
14.11.2011, 17:25 #5
Dar101, А почему они все закрытые? Как использовать-то? В public забыли поместить.
0
Dar101
40 / 40 / 7
Регистрация: 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
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
14.11.2011, 17:32 #7
Dar101, Не суть. Виртуального деструктора не наблюдаю - зря.
0
Dar101
40 / 40 / 7
Регистрация: 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
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
14.11.2011, 17:46 #9
Dar101, Да ок.
0
14.11.2011, 17:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2011, 17:46
Привет! Вот еще темы с решениями:

Абстрактные классы
В общем есть у нас 2 абстрактных класса CA и CB и 2 дочерних от них класса CC и...

Абстрактные классы
Ребята! Помогите с таким делом. Мне дали задание создать абстрактный класс...

Абстрактные классы
Никак не могу понять смысл абстрактных данных.Ведь мы можем использовать и...

Абстрактные классы
Народ, вопрос есть такой. Есть абстрактный класс class A { protected:...


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

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

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