Можем ли мы написать абстрактное ключевое слово в классе С++?
Можно ли использовать ключевое слово abstract в классе С++?
Ответ 1
#define abstract
Ответ 2
Нет.
Чистые виртуальные функции в С++ объявляются как:
class X
{
public:
virtual void foo() = 0;
};
Любой класс, имеющий хотя бы один из них, считается абстрактным.
Ответ 3
Нет, С++ не имеет абстрактного текста. Однако вы можете написать чистые виртуальные функции; что С++ способ выражения абстрактных классов.
Ответ 4
Это ключевое слово, введенное как часть языка С++/CLI для платформы .NET.
Ответ 5
нет, вам нужно иметь хотя бы одну чистую виртуальную функцию в классе, чтобы быть абстрактной.
Вот хорошая ссылка cplusplus.com
Ответ 6
Как отмечают другие, если вы добавляете чистую виртуальную функцию, класс становится абстрактным.
Однако, если вы хотите реализовать абстрактный базовый класс без чистых виртуальных элементов, я считаю полезным сделать конструктор защищенным. Таким образом, вы вынуждаете пользователя подклассифицировать ABC для его использования.
Пример:
class Base
{
protected:
Base()
{
}
public:
void foo()
{
}
void bar()
{
}
};
class Child : public Base
{
public:
Child()
{
}
};
Ответ 7
Фактическое ключевое слово abstract
существует в С++ (по крайней мере, 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
Ответ 8
Нет, вы не можете использовать абстрактный в качестве ключевого слова, потому что в C++ нет такого ключевого слова.
Если вы хотите сделать класс в виде абстракции из C++, вы можете объявить по крайней мере одну функцию как чисто виртуальную функцию.
Но в производном классе вы должны предоставить определение, иначе это даст ошибку компиляции.
Пример:
class A
{
public:
virtual void sum () = 0;
};
нота:
Вы можете использовать abstract как имя переменной, имя класса, потому что, как я уже говорил, abstract не является ключевым словом в C++.
Ответ 9
Не существует ключевого слова 'abstract', но чистая виртуальная функция превращает класс в абстрактный класс, который можно расширить и использовать в качестве интерфейса.
Ответ 10
Нет, у C++ нет ключевого слова abstract. Тем не менее, вы можете написать чисто виртуальные функции; что C++ способ выражения абстрактных классов. Это ключевое слово, представленное как часть описания языка C++/CLI для .NET Framework. У вас должна быть хотя бы одна чисто виртуальная функция в классе, чтобы быть абстрактной.
class SomeClass {
public:
virtual void pure_virtual() = 0; // a pure virtual function
};