مواقع أخرى
الأخبار
BBC عربي
CNN عربي
الصحف
الجامعات
جامعة الملك سعود
جامعة الملك عبد العزيز
الرياضة
في الأجزاء السابقة تم الوصول إلى أعضـاء الكائن باستخدام الأداة (.) وهي طريقة صحيحة أيضاً تسمح لغة C++ باستخدام أداة أخرى للوصول إلى أعضاء الكائن وهي أداة السهم (->) تماماً كما هو الحال في التراكيب ويتم ذلك عندما يكون الكائن عبارة عن مؤشر.
أعلى
#include<iostream.h>
#include<conio.h>
class myclass
{
int a;
public:
myclass(int);
int get( );
};
myclass::myclass(int x)
a=x;
}
int myclass::get( )
return a;
main( )
myclass ob(120); // define object
myclass *p; //define pointer of object
p=&ob; // transfer address of ob to p
cout<<"value from using object :"<<ob.get( )<<"\n";
cout<<"value from using pointer of object :"<<p->get( )<<"\n";
getch( );
ملاحظات:-
1.myclass*p استخدمنا الجملة لبناء مؤشر إلى الكائن.
2. بناء مؤشر الكائن بحد ذاته لايبني الكائن وإنما فقط يؤشر إليه.
3. p=&obللحصول على عموان موقع الكائن نستخدم العبارة.
ملاحظة:-
عند الحديث عن مؤشر الكائن فانه يظهر مفهوم جديد وهو المؤشر الحسابي ونقصد به هو أن مؤشر الكائن يمكن أن يخضع لبعض العمليات الحسابية وهي :
1. (++) أي زيادة المؤشر Increment .
وتعني أن المؤشر يشير إلى الكائن اللاحق
2. (--) أي إنقاص المؤشر Decrement .
ملاحظة مهمة:-
1. (++) أي زيادة المؤشر Increment
2. (--) أي إنقاص المؤشر Decrement
وتعني أن المؤشر يشير إلى الكائن السابق
class samp
int a,b;
samp(int n,int m)
a=n;
b=m;
int get_a( )
int get_b( )
return b;
samp ob[4]={samp(1,2),samp(3,4),samp(5,6),samp(7,8)}; // define object
int i;
samp *p;
p=&ob[i];
for(i=0;i<4;i++)
cout<<p->get_a()<<"\t"<<p->get_b()<<"\n";
p++;
كما هو ملاحظ في البرنامج فان كل عملية زيادة في p++ تشير إلى الكائن التالي في متجه الكائنات
وبما أن الحديث في هذا البرنامج يدور حول متجه الكائنات (objects array)
فلابد من الأخذ بعين الاعتبار للملاحظات التالية :-
1 .C++إن الكائن هو بحد ذاته متغير كأي متغير آخر وبناءاً عليه فان تسمح باستخدام متجه الكائنات
2.C++ أسلوب إعلان متجه الكائنات مشابه تماماً لأسلوب إعلان متجه المتغيرات في
إذا كان الصنف يتعامل مع مصفوفة كائنات وفي نفس الوقت مع دوال البناء الخاصة بها فانه يمكن تهيئة عنصر مصفوفة الكائنات كما في المثال التالي :-
samp(int n)
samp ob[4]={-1,-2,-3,-4};
cout<<ob[i].get_a( )<<"\t";
cout<<"\n";
-1 -2 -3 -4 هذا البرنامج يظهر على الشاشة القيم
samp( int n) بواسطة دالة البناء obونلاحظ أن القيم ترسل إلى الكائن
هي طريقة مختصرة لتهيئة متجه الكائنات والذي يمكن ان يكتب بطريقة موسعه حسب الجملة التالية
samp ob[4]={-1,-2,-3,-4} الجملة
لإلغاء delete لحجز الذاكرة الديناميكية والمؤشر new نستخدم المؤشر C++في لغة
الذاكرة المحجوزة ( تنظيف الذاكرة )
والصيغة العامة هي:-
p_var =new type;
delete p_var;
p تحدد نوع الكائن الذي سنقوم بحجز ذاكرة له أما type حيث
فهي مؤشر هذا النوع.
ملاحظة
لحجز new يمكن استخدام new لحجز ذاكرة ديناميكية لكائن منفرد كما يمكن استخدام newيمكن استخدام
ذاكرة لمتجه كائنات حسب الصيغة العامة التالية:-
p_var =new type[size];
delete تشير إلى أول عنصر في متجه الكائنات , كما يستخدم p-varوفي هذه الحالة
لحذف متجه كائنات من الذاكرة حسب الصيغة العامة التالية:-
delete[] p_var;
-:مثال
مع متجه كائنات: new & deleteاستخدام
int i,j;
void set_ij(int a,int b)
i=a;
j=b;
int get_product( )
return i*j;
p=new samp[10];
for(i=0;i<10;i++)
p->set_ij(i,i);
cout<<p->get_product( )<<"\n";
delete[ ] p;
<< الوحدة السابقة
الوحدة التالية >>
جميع الحقوق محفوظة © 2006