C + + فئة عم مرئية في "مصمم فئة."

يدعم C + + فئة عم فئة مصمم و visualizes عم فئة C + + الأصلي بنفس الطريقة Visual أساسى و Visual C# فئة الأشكال، إلا أنه يمكن أن يكون C + + فئة عم علاقات التوريث متعددة. يمكنك توسيع الشكل فئة إلى إظهار مزيد من حقول والأساليب في الفئة أو طيها إلى الحفاظ على المساحة.

ملاحظة

لا يعتمد مصمم فئة الاتحادات (نوعا خاصا من فئة تخصيص ذاكرة هو مقدار ضرورية لعضو بيانات الأكبر للتوحيد فقط).

توريث بسيطة

عندما تقوم بسحب المزيد فئة إلى فئة مخطط، والفئات التي لها علاقة توريث فئة، سهم يصل إليها. يشير السهم في الاتجاه فئة الأساس. على سبيل المثال، عندما عم فئة التالية معروضة في فئة مخطط، سهم تصل إليها الإشارة من B إلى A:

class A {};
class B : A {};

يمكنك أيضا يسحب فقط الفئة B إلى الفئة مخطط زر الماوس الأيمن فوق شكل فئة ل B وثم انقر فوق إظهار فئات القاعدة. يؤدي ذلك إلى عرض فئة الأساس الخاصة به: ج:

عدة توريث

يدعم فئة مصمم المرئيات من مضاعفات-فئة علاقات التوريث. وراثة متعددة هو المستخدمة عندما يكون السمات الخاصة بأكثر من فئة أساسية لفئة مشتقة. اتباع هو مثالاً للوراثة متعددة:

class Bird {};
class Swimmer {};
class Penguin : public Bird, public Swimmer {};

عندما تقوم بسحب المزيد فئة في رسم تخطيطي لفئة، و الفئات التي لها علاقة توريث المتعددة فئات، سهم يصل إليها. نقاط السهم في الالاتجاه الأساس الفئات.

يعرض زر الماوس الأيمن فوق شكل فئة، ثم النقر فوق إظهار فئات الأساس الأساس الفئات للفئة المحددة.

ملاحظة

الأمر إظهار فئات المنحدر هو غير معتمدة للتعليمات البرمجية C + +. يمكنك عرض المشتقة فئة عم قبل الانتقال إلى عرض فئة توسيع العقدة نوع، قم بتوسيع المجلد الفرعي أنواع المنحدر وثم سحب تلك الأنواع على فئة مخطط.

لمزيد من المعلومات حول متعددة-فئة توريث، راجع Multiple Inheritanceو Multiple Base Classes.

فئات مجردة

يدعم فئة مصمم مجردة فئة عم (تسمى أيضا "الخلاصه الأساسية فئة عم"). هذه فئات عدم إنشاء مثيل، ومنها التي يمكنك الحصول على آخر فئات. استخدام مثال من "ارث متعدده" سابقا في هذا مستند، الذي قد بدء Birdفئة كفرد الكائنات كالتالي:

int main()
{
   Bird sparrow;
   Bird crow;
   Bird eagle;
}

ومع ذلك، ربما لم تخطط إلى إنشاء مثيل Swimmerفئة ككائنات فردية. ربما كنت فقط إلى اشتقاق أنواع غير ذلك من فئات حيوان منه، على سبيل المثال، Penguin، Whale، و Fish. في هذه الحالة، قد تقوم بتعريفه Swimmerفئة كأساس مجرد فئة.

إعلان فئة كخلاصة، يمكنك استخدام abstractالكلمة الأساسية. الأعضاء وضعت الملخص أو تضمينها في فئة مجردة ظاهري ويجب أن يتم تطبيقها من قبل الفئات ينحدر من فئة مجردة.

class Swimmer abstract
{
   virtual void swim();
   void dive();
};

إمكانية أيضا تعريف فئة كخلاصة بما في ذلك على الأقل خالص ظاهري دالة:

class Swimmer
{
   virtual void swim() = 0;
   void dive();
};

عندما تقوم بعرض هذه تصريحات في "مخطط الفئة" فئة اسم Swimmerووظيفتها الظاهري فقط swimفي عرض بالخط المائل في شكل فئة مجردة، مع المنهج فئة الخلاصة . لاحظ بأن شكل نوع فئة مجردة نفسه من فئة عادية، إلا أن الحدود الخاصة به خط منقط.

يجب أن فئة مشتقة من فئة مجردة أساسية يمنع لا يمكن إنشاء مثيل لكل دالة ظاهري فقط في فئة الأساس، أو الفئة المشتقة. في هذه الحالة، ل مثال، إذا كان يمكنك الحصول على Fishلفئة من Swimmerفئة، Fishيجب أن تتجاوز swimأسلوب:

class Fish : public Swimmer
{
   void swim(int speed);
};

int main()
{
   Fish guppy;
}

عندما تقوم بعرض هذه تعليمات برمجية في فئة مخطط، يرسم "مصمم الفئات" إلى خط وراثة من Fishإلى Swimmer.

فئات مجهولة

يدعم المصمم فئة فئة عم مجهول. أنواع فئة مجهولة فئات التصريح بدون معرّف. لا يمكن أن يكون المنشئ أو destructor، لا يمكن أن يكون pكـsed كـ الوسيطات إلى الوظائف، ولا يمكن إرجاع كـ إرجاع القيم من الدالات. يمكنك استخدام دراسي مجهول إلى استبدال اسم فئة باسم typedef، كما في المثال التالي:

typedef struct
{
    unsigned x;
    unsigned y;
} POINT;

يمكن أن يكون بني مجهول. يعرض المجهول فئة عم فئة مصمم وبني تماما كما تقوم بعرض نوع المعنية. على الرغم من أنه يمكنك تعريف وعرض فئة عم المجهول وبني، لن يقوم فئة مصمم باستخدام اسم الوسم التي قمت بتحديدها. سيستخدم الاسم الذي يقوم بإنشاء طريقة عرض فئة. فئة أو بنية يظهر في عرض فئة و فئة مصمم كعنصر يسمى __unnamed .

ل المزيد من المعلومات حول فئات مجهول، راجع Anonymous Class Types.

قالب فئات

يدعم فئة مصمم المرئيات قالب فئة عم. يتم اعتماد تصريحات المتداخلة. يلي جدول يعرض بعض تصريحات العادية.

رمز عنصر

فئة عرض المصمم

template <class T>

class A {};

A<T>

قالب فئة

template <class T, class U>

class A {};

A<T, U>

قالب فئة

template <class T, int i>

class A {};

A<T, i>

قالب فئة

template <class T, template <class K> class U>

class A {};

A<T, U>

قالب فئة

يعرض الجدول التالي بعض الأمثلة عن جزئي specialization.

رمز عنصر

فئة عرض المصمم

template<class T, class U>

class A {};

A<T, U>

قالب فئة

template<class T>

class A<T, T> {};

A<T, T>

قالب فئة

template <class T>

class A<T, int> {};

A<T, int>

قالب فئة

template <class T1, class T2>

class A<T1*, T2*> {};

A<T1*, T2*>

قالب فئة

يعرض الجدول التالي بعض الأمثلة للوراثة في جزئي specialization.

رمز عنصر

فئة عرض المصمم

template <class T, class U>

class A {};

template <class TC>

class A<T, int> {};

class B : A<int, float>

{};

class C : A<int, int>

{};

A<T, U>

قالب فئة

B

الفئة

(نقاط إلى فئة أ)

C

الفئة

(نقاط إلى فئة أ)

يعرض الجدول التالي بعض الأمثلة عن specialization الجزئية قالب الوظائف.

رمز عنصر

فئة عرض المصمم

class A

{

template <class T, class U>

void func(T a, U b);

template <class T>

void func(T a, int b);

};

A

func < T، ع > (+ 1 التحميل الزائد)

template <class T1>

class A {

template <class T2>

class B {};

};

template<> template<>

class A<type>::B<type> {};

A<T1>

قالب فئة

B<T2>

قالب فئة

(ب هو الموجودة ضمن الفئة A تحت أنواع المتداخل)

template <class T>

class C {};

class A : C<int> {};

A

الفئة

-> ج <int>

C<T>

قالب فئة

يعرض الجدول التالي بعض أمثلة من توارث القالب.

رمز عنصر

فئة عرض المصمم

template <class T>

class C {};

template<>

class C<int> {

class B {};

}

class A : C<int>::B {};

A

الفئة

-> B

C<int>

الفئة

(ب هو الموجودة ضمن الفئة C تحت أنواع المتداخل)

C<T>

قالب فئة

يعرض الجدول التالي بعض الأمثلة عن المتعارف عليه خاصة فئة الاتصال.

رمز عنصر

فئة عرض المصمم

template <class T>

class C {};

template<>

class C<int> {};

class A : C<int> {};

class D : C<float> {};

A

الفئة

-> ج <int>

C<int>

الفئة

C<T>

قالب فئة

D

الفئة

-> ج <حُر>

class B {

template <class T>

T min (const T &a, const T &b);

};

B

أدنى <T>

راجع أيضًا:

المرجع

Classes, Structures, and Unions

Anonymous Class Types

Multiple Inheritance

Multiple Base Classes

المبادئ

العمل مع تعليمات برمجية Visual C + + (@)

موارد أخرى

Templates