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

Наследники абстрактного класса

30.06.2017, 20:34. Показов 3179. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть классы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class A
{
public:
virtual void met() = 0; 
};
class B : public A
{
public:
virtual void met() const; 
}; 
class C : public A
{
public:
virtual void met(); 
};
class D : public A
{
public:
void met(){}; 
};
.
Я правильно понимаю, что все классы, кроме класса D, будут абстрактными (наследники абстрактного класса тоже являются абстрактными, если в них не определены все чисто виртуальные методы)?
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2017, 20:34
Ответы с готовыми решениями:

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

Как обратится к обьекту класса, являющегося наследником абстрактного класса
Здравствуйте! У меня есть 4 класса: один виртуальный, следующие 2 - наследуют виртуальный класс и...

Поместить в динамически расширяемый массив объекты класса, производные от базового абстрактного класса
Помогите пожалуйста новичку! (мне). Я хочу создать динамически расширяющийся массив указателей...

Вызов функции класса, который наследуется от абстрактного класса
Предположим, что существует класс Base, который является абстрактным class Base{ public:...

3
What a waste!
1607 / 1299 / 180
Регистрация: 21.04.2012
Сообщений: 2,727
30.06.2017, 20:51 2
Лучший ответ Сообщение было отмечено Букер как решение

Решение

Цитата Сообщение от Букер Посмотреть сообщение
Я правильно понимаю, что все классы, кроме класса D, будут абстрактными
Нет. B определяет другой метод met (внимание на const), поэтому абстрактный.

Добавлено через 1 минуту
Можно так же посмотреть с помощью std::is_abstract: http://ideone.com/UDbZtK .

Добавлено через 3 минуты
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <type_traits>
 
 
class A
{
public:
virtual void met() = 0;
};
class B : public A
{
public:
virtual void met() const;
};
class C : public A
{
public:
virtual void met();
};
class D : public A
{
public:
void met(){};
};
 
 
int main() {
   std::cout << std::is_abstract<A>::value << std::endl;
   std::cout << std::is_abstract<B>::value << std::endl;
   std::cout << std::is_abstract<C>::value << std::endl;
   std::cout << std::is_abstract<D>::value << std::endl;
}
1
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 63
01.07.2017, 10:47  [ТС] 3
Значит, класс B будет полиморфным, так как содержит виртуальную функцию, но не абстрактным, так как функция не чисто виртуальная?
0
Неэпический
17813 / 10585 / 2043
Регистрация: 27.09.2012
Сообщений: 26,625
Записей в блоге: 1
01.07.2017, 11:10 4
Цитата Сообщение от Букер Посмотреть сообщение
но не абстрактным, так как функция не чисто виртуальная?
Он унаследует от класса A его не реализованный функционал, и тоже будет абстрактным.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2017, 11:10
Помогаю со студенческими работами здесь

Вектор с типом класса, а его элементы наследники
Доброе время суток. Ответ искал, но нигде не нашел. Да и точно сформировать запрос не могу. В...

Как объявить указатель на классы наследники одного класса?
Требуется в одном классе(напримпр, NLayer) объявить, а потом и заполнить динамический массив из...

Реализация абстрактного класса
Создать абстрактный базовый класс Function (функция) с виртуальными методами вычисления значения...

Использование абстрактного класса
Доброго времени. Использую абстрактный класс Algorithm с абстрактным методом Calculate() и 5...


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

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

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