الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما الفرق بين تعريف الـ object خارج الـ main() وتعريفه داخلها

بدأه (الخوارزمي) في 15 مارس 2011 · 8 رد · 1,321 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

إخواني الأفاضل

أنا أعلم أن تعريف المتغيرات خارج الـ main() يجعلها global variables

بينما في الداخل تكون local

و الآن هل صنع الكائنات داخل ال main() مثل صنعها خارجها أم هناك اختلاف ما

الكود الآتي يوضح قصدي

class obj
{int x,y;
public:
obj()
{x=0;
y=0;
}};
obj one;
int main()
{
obj two;
}

و الآن ما الفرق بين one و two

#2

عليكم السلام ورحمة الله

نفس الشي اللي انت عارفو ينطبق هنا بالمثال

الكائن 1 global

الكائن 2 local

موفق يارب

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#3
(الخوارزمي) كتب:

السلام عليكم و رحمة الله و بركاته

إخواني الأفاضل

أنا أعلم أن تعريف المتغيرات خارج الـ main() يجعلها global variables

بينما في الداخل تكون local

و الآن هل صنع الكائنات داخل ال main() مثل صنعها خارجها أم هناك اختلاف ما

الكود الآتي يوضح قصدي

class obj
{int x,y;
public:
obj()
{x=0;
y=0;
}};
obj one;
int main()
{
obj two;
}

و الآن ما الفرق بين one و two

السؤال الاهم من كل ذلك هو هل تعرف الفرق بين global وال local

عندما منعامل مع اسماء المتغيرات وكذلك stack memory يموت الكائن بمجرد خروجه من ال scope التي انشاء فيها وكذلك في مرحله ال compilation بمجرد الخروج من ال scope لايمكنك استخدام اسم متغير عرف داخل ال scope.

2
#4

لو جاءت اى دوال بعد الدالة main

يمكنها استخدام الكائن one لانه global

لكن لن تستطيع استخدام الكائن two خارج الدالة main

لانه local

بالتوفيق

1


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#5

شكرا لمجهوداتكم جميعا

و لكن هل أفهم من كلامكم أنه لا يوجد أضرار تترتب علي جعل الكائنات من نوع global

#6
(الخوارزمي) كتب:

شكرا لمجهوداتكم جميعا

و لكن هل أفهم من كلامكم أنه لا يوجد أضرار تترتب علي جعل الكائنات من نوع global

السلام عليكم

هندسياً ونموذجياً من الافضل اجتناب إنشاء متغيرات global بقدر الممكن و عند الإضطرار لذلك فقط

هناك ضرر فربما قد تريد استعمال المتغير x الموجود بالـ global داخل دالة معينة فيها متغير x ايضاً ويكون local

فيحدث خطأ منطقي يصعب اكتشافه لأن الدالة ستستعمل المتغير x الموجود بداخلها هي ولن تستعمل التاني الموجود بالـ global

خلاصة: المتغير local يحجب المتغير global الذي له نفس الإسم داخل الدالة

عفواً

أطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#7
♥ حُوريّة ♥ كتب:

السلام عليكم

هندسياً ونموذجياً من الافضل اجتناب إنشاء متغيرات global بقدر الممكن و عند الإضطرار لذلك فقط

هناك ضرر فربما قد تريد استعمال المتغير x الموجود بالـ global داخل دالة معينة فيها متغير x ايضاً ويكون local

فيحدث خطأ منطقي يصعب اكتشافه لأن الدالة ستستعمل المتغير x الموجود بداخلها هي ولن تستعمل التاني الموجود بالـ global

خلاصة: المتغير local يحجب المتغير global الذي له نفس الإسم داخل الدالة

عفواً

أطيب المُنى

نعم هذه نقطه مهمه للغايه استخدام ال Local variables يكون له اولويا اعلى من ال Global بنفس الاسم

ولكن في نفس الوقت يجب ان نذكر انه يمكن كذلك استخدام المتغير ال Global بتنبيه بسيط لل compiler بشكل التالي :

#include<iostream>
#include<cstdlib>
using namespace std;
int X=5;
int main()
{
	int X=10;

	//use Local
	cout<<"Local X ="<<X<<endl;

	//use Global
	cout<<"Global X ="<<::X<<endl;

	system("pause");
	return 0;
}
1
#8

الإخوة الأعزاء أشكر لكم حسن اهتمامكم و مشاركتكم بهذه المعلومات الثرية

الأخ الموقر Ali Al-Zyoud

إن استخدام الـ scope resolution في هذا الموضع يمثل معلومة جديدة بالنسبة لي

و ها هي محاولتي لاستخدامه مع الكائنات


#include<iostream>
using namespace std;

class obj
{
int x;
public:

void set_data(int n)
{
x=n;
}
int ret_data()
{
return x;
}
};

obj one;

int main()
{
one.set_data(5);

obj one;
one.set_data(10);

cout<<one.ret_data()<<endl;
cout<<::one.ret_data();
}

و أكرر شكري للأخ محمد فتحي و الأخ علي و الأخت حرية

و السلام عليكم

#9

لا شكر على واجب أخى

بالتوفيق والى الامام دائما


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…