Значение ключевого слова _abstract (абстрактный) очень похоже на значение ключевого
слова abstract (абстрактный) в языке Java. Оно также напоминает о сложившейся
традиции рассматривать класс C++, содержащий хотя бы одну чистую (pure) виртуальную
функцию, как абстрактный. Ключевое слово _abstract (абстрактный) делает это
объявление явным. Как и в случае ключевого слова _interface (интерфейс), ключевое
слово _abstract (абстрактный) используется для обозначения того, что класс определяет
некоторые общие обязательные соглашения между кодом, реализующим методы этого
абстрактного класса, и кодом клиентов, вызывающих эти методы. Обратите внимание,
что, если абстрактный класс определяется как управляемый, в его описании следует
использовать также и ключевое слово _gс (сборщик мусора).
Абстрактный класс подобен интерфейсу в
том, что он является лишь средством
проявления полиморфизма, а создать
экземпляр такого класса непосредственно
нельзя. Однако, в отличие от интерфейса,
абстрактный класс может содержать
реализации нескольких, или даже всех своих
//AbstractExample.срр
#using <rnscorlib.dll>
using namespace System;
// использовать пространство имен Система;
_abstract class AbstractClass
// абстрактный класс AbstractClass
{
public:
virtual void Methodlf) = 0; // виртуальный; не реализован здесь
virtual void Method2() // виртуальный; реализован здесь
{
Console::WriteLine("Method2");
}
};
class DerivedClass : public AbstractClass
{
public:
void Method1() // реализован здесь
{
Console::WriteLine("Method1");
}
};
void main(void) » {
//AbstractClass *pac = new AbstractClass; // ошибка
AbstractClass *pac = new DerivedClass; // указатель
pac->Methodl();
pac->Method2();
AbstractClass &ac = *new DerivedClass; // ссылка
ас.Methodl();
ac.Method2() ; }
Профамма напечатает:
Method1
Method2
Method1
Method2