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-declaration class-identifier abstract {}
virtual
dönüş türü member-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
};