Почему, когда мы наследуем абстрактный класс C#, определенный в .dll, наш класс C++ - CLI вынужден абстрактный?
Есть ли способ сделать это не абстрактным нашим классом C++ - CLI?Почему наш класс C++ вынужден абстрактный?
ответ
Я не уверен, что правильно понял ваш вопрос, но вы должны реализовать все методы, объявленные, но не реализованные в абстрактном базовом классе, иначе, естественно, ваш класс также считается абстрактным.
Если ваш класс объявляет любые «чисто виртуальные» методы (т. Е. С «= 0») или наследует любые чистые виртуальные методы, не переопределяя их, ваш класс будет абстрактным.
class A
{
public:
virtual void fun() = 0; //"pure" virtual function
virtual void gun() = 0; //"pure" virtual function
virtual void sun() //virtual function - "not pure"
{
/***** implementation code *****/
}
};
Здесь A
является абстрактным классом, поскольку он имеет две чистые виртуальные функции.
class B : public A
{
public:
virtual void fun()
{
/******* implementation code ********/
}
};
Вопрос: Что такое B
? Это не абстрактный? В конце концов, он определил/внедрил одну чистую виртуальную функцию под названием fun()
?
Ответ: No. B
тоже является абстрактным классом, так как он не определяет/реализации gun()
, который тоже является чисто виртуальная функция в базовом классе A
. Определение только одного чистой виртуальной функции, называемой fun()
, не делает ее не абстрактной. Он должен определить ВСЕ виртуальные функции. ALL означает ALL, столько, сколько существует виртуальных функций.
Итак, две важные заметки: 1) чистые виртуальные функции, 2) определить их все. Только тогда класс может стать конкретным/не-абстрактным!
- 1. Почему требуется абстрактный класс?
- 2. Параметры шаблона шаблона, почему класс вынужден?
- 3. C# Абстрактный класс ошибки
- 4. абстрактный класс в C++
- 5. C# абстрактный класс
- 6. Почему абстрактный класс имеет конструктор?
- 7. C++ объявляет абстрактный класс как класс друзей
- 8. C++, переменные, абстрактный/виртуальный класс
- 9. C++, абстрактный класс и наследование
- 10. C++/CLI абстрактный базовый класс?
- 11. абстрактный класс матрицы в C++
- 12. C++: абстрактный класс как член
- 13. C# делегат и абстрактный класс
- 14. Вложенный абстрактный класс и возвращающий абстрактный класс
- 15. Абстрактный базовый класс имеет абстрактный вложенный класс
- 16. абстрактный класс расширяет абстрактный класс в php?
- 17. Абстрактный класс Initialization
- 18. Почему внутренний класс вынужден реализовать свои интерфейсные методы, даже если у него есть внешний класс?
- 19. Почему абстрактный класс должен реализовывать абстрактный метод абстрактного базового класса?
- 20. Почему абстрактный абстрактный родительский класс при выполнении наследования в EF?
- 21. Абстрактный класс, класс, интерфейс
- 22. Почему мой класс гнезда рассматривается как абстрактный?
- 23. C# абстрактный класс, работает с инициализацией массива
- 24. абстрактный класс множественное наследование
- 25. абстрактный класс или интерфейс
- 26. Указатель на абстрактный класс
- 27. «Абстрактный класс не принимает параметры»: почему?
- 28. Почему мой подкласс рассматривается как абстрактный класс?
- 29. Почему абстрактный класс заставляет конкретный метод переопределяться?
- 30. Почему java.sql.Statement интерфейс, а не абстрактный класс?
Правильно, но ваша терминология немного выключена: вы должны не чисто реализовать все чистые методы в базе. Можно реализовать чистый метод; это чаще всего наблюдается при реализации чистых dtors. –