CObject'ten Sınıf Türetme
Bu makalede, CObject'ten bir sınıf türetmek için gereken en düşük adımlar açıklanmaktadır. Diğer CObject
sınıf makaleleri, serileştirme ve tanılama hata ayıklama desteği gibi belirli CObject
özelliklerden yararlanmak için gereken adımları açıklar.
tartışmalarında CObject
"arabirim dosyası" ve "uygulama dosyası" terimleri sık sık kullanılır. Arabirim dosyası (genellikle üst bilgi dosyası veya olarak adlandırılır). H dosyası) sınıf bildirimini ve sınıfını kullanmak için gereken diğer bilgileri içerir. Uygulama dosyası (veya . CPP dosyası) sınıf tanımının yanı sıra sınıf üyesi işlevlerini uygulayan kodu içerir. Örneğin, adlı CPerson
bir sınıf için genellikle PERSON adlı bir arabirim dosyası oluşturursunuz. H ve PERSON adlı bir uygulama dosyası. CPP. Ancak, uygulamalar arasında paylaşılmayan bazı küçük sınıflar için, bazen arabirimi ve uygulamayı tek bir içinde birleştirmek daha kolaydır. CPP dosyası.
öğesinden bir sınıf CObject
türerken dört işlev düzeyi arasından seçim yapabilirsiniz:
Temel işlevsellik: Çalışma zamanı sınıf bilgileri veya serileştirme desteği yoktur, ancak tanılama bellek yönetimi içerir.
Temel işlevsellik ve çalışma zamanı sınıf bilgileri için destek.
Temel işlevsellik ve çalışma zamanı sınıf bilgileri ve dinamik oluşturma desteği.
Temel işlevsellik ve çalışma zamanı sınıf bilgileri, dinamik oluşturma ve serileştirme desteği.
Yeniden kullanım için tasarlanan sınıflar (daha sonra temel sınıf görevi görecek sınıflar), gelecekteki serileştirme gereksinimi öngörülmesi durumunda en azından çalışma zamanı sınıf desteği ve serileştirme desteği içermelidir.
içinden türetdiğiniz CObject
sınıfların bildiriminde ve uygulamasında belirli bildirim ve uygulama makrolarını kullanarak işlev düzeyini seçersiniz.
Aşağıdaki tabloda, serileştirme ve çalışma zamanı bilgilerini desteklemek için kullanılan makrolar arasındaki ilişki gösterilmektedir.
Serileştirme ve Çalışma Zamanı Bilgileri için Kullanılan Makrolar
Kullanılan makro | CObject::IsKindOf | Cruntimeclass:: CreateObject |
CArchive::operator>> CArchive::operator<< |
---|---|---|---|
Temel CObject işlevsellik |
Hayır | Hayı | Hayı |
DECLARE_DYNAMIC |
Evet | Hayı | Hayı |
DECLARE_DYNCREATE |
Evet | Evet | Hayır |
DECLARE_SERIAL |
Evet | Evet | Evet |
Temel CObject işlevselliğini kullanmak için
sınıfınızı (veya öğesinden
CObject
türetilen bir sınıftan) türetmek için normal C++ söz diziminiCObject
kullanın.Aşağıdaki örnekte, en basit durum olan öğesinden
CObject
bir sınıfın türetilmesi gösterilmektedir:class CSimple : public CObject { // add CSimple-specific members and functions... };
Ancak normalde, yeni sınıfınızın ayrıntılarını işlemek için bazı CObject
üye işlevlerini geçersiz kılmak isteyebilirsiniz. Örneğin, genellikle sınıfınızın içeriği için hata ayıklama çıkışı sağlamak üzere işlevini CObject
geçersiz kılmak Dump
isteyebilirsiniz. öğesini geçersiz kılma Dump
hakkında ayrıntılı bilgi için Nesne Dökümü Özelleştirme makalesine bakın. Ayrıca, sınıf nesnelerinin AssertValid
veri üyelerinin tutarlılığını doğrulamak için özelleştirilmiş test sağlamak için işlevini CObject
geçersiz kılmak isteyebilirsiniz. geçersiz kılmanın AssertValid
açıklaması için bkz . MFC ASSERT_VALID ve CObject::AssertValid.
İşlevsellik Düzeylerini Belirtme makalesi, çalışma zamanı sınıf bilgileri, dinamik nesne oluşturma ve serileştirme gibi diğer işlev düzeylerini belirtmeyi açıklar.