Можем ли мы написать абстрактное ключевое слово в классе C++?Могу ли я использовать ключевое слово abstract в классе C++
ответ
Нет, C++ не имеет абстрактного текста. Однако вы можете написать pure virtual functions; это C++ способ выражения абстрактных классов.
Номер
Чистые виртуальные функции, в C++, объявляются как:
class X
{
public:
virtual void foo() = 0;
};
Любой класс, имеющий по меньшей мере один из них считается абстрактным.
Это ключевое слово, введенное как часть языка C++/CLI для платформы .NET.
... который не C++. Серьезно, ref, это посягательство ... – DevSolar
Технически это расширение Microsoft C++ для собственного кода, даже если вы не нацеливаете .NET, поэтому это не C++/CLI. Просто расширение, такое же, как '__interface' или' __declspec (свойство) '. Все-таки не ISO C++, конечно. –
Нет downvotes, но C++ подразумевает стандартный C++. Любая нестандартная реализация XYZ должна быть явно указана, и пока такая спецификация не будет сделана, нет оснований признавать ее существование. – lorefnon
Нет, вам нужно иметь хотя бы одну чистую виртуальную функцию в классе, чтобы быть абстрактной.
Вот хорошая ссылка cplusplus.com
#define abstract
Там нет ключевого слова «абстрактного», но чисто виртуальная функции превращает класс в абстрактный класс, который можно расширить и повторно использовать в качестве интерфейса.
Как отмечают другие, если вы добавите чистую виртуальную функцию, класс станет абстрактным.
Однако, если вы хотите реализовать абстрактный базовый класс без чистых виртуальных элементов, я считаю полезным сделать конструктор защищенным. Таким образом, вы вынуждаете пользователя подклассифицировать ABC для его использования.
Пример:
class Base
{
protected:
Base()
{
}
public:
void foo()
{
}
void bar()
{
}
};
class Child : public Base
{
public:
Child()
{
}
};
на самом деле ключевое слово abstract
существует в C++ (VS2010 по крайней мере), и я нашел, что это может быть использовано, чтобы объявить класс /-структуру, как не-экземпляр. не
struct X abstract {
static int a;
static void foX(){};
};
int X::a = 0;
struct Y abstract : X { // something static
};
struct Z : X { // regular class
};
int main() {
X::foX();
Z Zobj;
X Xobj; // error C3622
}
MSDN: https://msdn.microsoft.com/en-us/library/b0z6b513%28v=vs.110%29.aspx
'abstract' не является частью стандарта C++. – smerlin
Нестандартный, но поскольку это нефункциональная проверка здравомыслия, его легко фиксировать условным '# define' на других компиляторах в соответствии с ответом Кена. –
@cz Что делает '#define abstract'? –
нет, вы не можете использовать абстрактные в качестве ключевого слова .because нет какого-либо абстрактное слово ключ доступен в C++.
Если вы хотите сделать класс в виде абстракции C++, вы можете объявить хотя бы одну функцию как чистую виртуальную функцию.
, но в производном классе вы должны предоставить определение else, чтобы оно выдало ошибку компиляции.
EX:
class A
{
public :
virtual void sum()=0;
};
примечание:
вы можете использоваться абстрактно, так как имя переменной, имя класса, потому что выше я говорил вам, что аннотация не является ключевым словом в C++.
Нет, у C++ нет абстрактного слова. Однако вы можете писать чистые виртуальные функции; это C++ способ выражения абстрактных классов. Это ключевое слово, введенное как часть языка C++/CLI для платформы .NET. нет, вам нужно иметь хотя бы одну чистую виртуальную функцию в классе, чтобы быть абстрактной.
класс SomeClass { общественный: виртуальный void pure_virtual() = 0; // чистая виртуальная функция
};
- 1. C# Использовать 'this' Ключевое слово в классе
- 2. Могу ли я использовать зарезервированное ключевое слово «in» в CoffeeScript?
- 3. Могу ли я использовать ключевое слово «AS» в Case Case
- 4. Когда использовать ключевое слово "static" в классе C++?
- 5. Содержит ли ключевое слово super в классе Java this.getClass.getSuperClass() ...?
- 6. Должен ли я использовать динамическое ключевое слово для оптимизации конверсий?
- 7. Когда использовать ключевое слово Value в C#
- 8. Зачем использовать ключевое слово global в C#?
- 9. Можно ли принудительно использовать ключевое слово «this» в C++?
- 10. 'вар' ключевое слово в C#
- 11. Можно ли использовать ключевое слово `this` в C?
- 12. Должен ли я использовать ключевое слово private или ключевое слово public в getter/setter?
- 13. Должен ли я использовать ключевое слово Call в VB/VBA?
- 14. Можем ли мы объявить класс интерфейса, сделав все методы абстрактными, используя ключевое слово 'abstract' в классе на C++?
- 15. Ключевое слово C++ const - использовать либерально?
- 16. Ruby redefine "и" ключевое слово в классе?
- 17. Должен ли я использовать ключевое слово явное для конструкторов копирования?
- 18. Могу ли я игнорировать ключевое слово DEFINED в cmake?
- 19. «Это» ключевое слово в классе CoffeeScript
- 20. CoffeeScript объем @ ключевое слово в классе
- 21. Я правильно использовал это ключевое слово в своем классе?
- 22. Зачем использовать абстрактное ключевое слово в Julia?
- 23. Использовать ключевое слово переопределения C++ обязательно?
- 24. C#: как использовать enum ключевое слово?
- 25. Зачем мне нужно использовать ключевое слово @property в объективе-c?
- 26. Scope и «я» ключевое слово
- 27. Почему я не могу использовать ключевое слово as для структуры?
- 28. C# WinForms Ключевое слово
- 29. Могу ли я использовать __autoload в классе?
- 30. "nice" ключевое слово в C++?
Конечно, мы можем это сделать. К сожалению, код не будет компилироваться, хотя =) – SadSido
Что относительно абстрактного ключевого слова в Visual C++ (специфический для Micrsoft). Это не стандартное, или хорошо реализовано, на мой взгляд, но оно считается, не так ли? : P – user965369
В дополнение к чистым виртуальным функциям в C++ я отмечаю абстрактные классы с «A_» как префикс имени класса на любом языке, например. "A_MyAbstractClass". Я лично считаю это весьма полезным. –