abstract (C++/CLI ve C++/CX)

abstract anahtar sözcüğü aşağıdakilerden birini bildirir:

  • Bir tür temel tür olarak kullanılabilir, ancak türün kendisi örneği oluşturulamaz.

  • Tür üyesi işlevi yalnızca türetilmiş bir tür içinde tanımlanabilir.

Tüm Platformlar

Sözdizimi

class-declarationclass-identifierabstract {}

virtualreturn-typemember-function-identifier() abstract ;

Açıklamalar

İlk örnek söz dizimi soyut olacak bir sınıf bildirir. Veya derleyici seçeneği belirtilmişse /clr/ZW, sınıf bildirimi bileşeni yerel bir C++ bildirimi (class veya struct) ya da bir C++ uzantı bildirimi (başvuru sınıfı veya başvuru yapısı) olabilir.

İkinci örnek söz dizimi, bir sanal üye işlevini soyut olarak bildirir. İşlev özetini bildirmek, bunu saf bir sanal işlev olarak bildirmekle aynıdır. Bir üye işlevinin soyut olarak bildirilmesi, kapsayan sınıfın soyut olarak bildirilmesine de neden olur.

Soyut anahtar sözcük yerel ve platforma özgü kodda desteklenir; yani veya /clr derleyici seçeneğiyle veya olmadan /ZW derlenebilir.

Bir türün tür özelliğiyle __is_abstract(type) soyut olup olmadığını derleme zamanında algılayabilirsiniz. Daha fazla bilgi için bkz . Tür Özellikleri için Derleyici Desteği.

Soyut anahtar sözcüğü, bağlama duyarlı bir geçersiz kılma tanımlayıcısıdır. Bağlama duyarlı anahtar sözcükler hakkında daha fazla bilgi için bkz . Bağlama Duyarlı Anahtar Sözcükler. Geçersiz kılma tanımlayıcıları hakkında daha fazla bilgi için bkz . Nasıl yapılır: Yerel Derlemelerde Geçersiz Kılma Tanımlayıcılarını Bildirme.

Windows Çalışma Zamanı

Daha fazla bilgi için bkz . Başvuru sınıfları ve yapıları.

Gereksinimler

Derleyici seçeneği: /ZW

Ortak Dil Çalışma Zamanı

Gereksinimler

Derleyici seçeneği: /clr

Örnekler

Aşağıdaki kod örneği, sınıf X soyut olarak işaretlendiğinden bir hata oluşturur.

// abstract_keyword.cpp
// compile with: /clr
ref class X abstract {
public:
   virtual void f() {}
};

int main() {
   X ^ MyX = gcnew X;   // C3622
}

Aşağıdaki kod örneği, soyut olarak işaretlenmiş yerel bir sınıfın örneğini oluşturduğundan bir hata oluşturur. Bu hata derleyici seçeneğiyle veya /clr olmadan oluşur.

// abstract_keyword_2.cpp
class X abstract {
public:
   virtual void f() {}
};

int main() {
   X * MyX = new X; // C3622: 'X': a class declared as 'abstract'
                    // cannot be instantiated. See declaration of 'X'}

İşlev bir tanım içerdiğinden ancak soyut olarak işaretlendiğinden aşağıdaki kod örneği bir hata f oluşturur. Örnekteki son deyim, soyut bir sanal işlevi bildirmenin saf bir sanal işlevi bildirmeye eşdeğer olduğunu gösterir.

// abstract_keyword_3.cpp
// compile with: /clr
ref class X {
public:
   virtual void f() abstract {}   // C3634
   virtual void g() = 0 {}   // C3634
};

Ayrıca bkz.

.NET ve UWP İçin Bileşen Uzantıları