• 0
alnzir

ما هي الكائنات الثابتة والدوال الثابتة

سؤال

مرحبا اعذائ الكرام مساكم الله باالخير انا عوز اعمل ماهى الكائنات الثابتة والدول الثابتة  يعنى يكون على شكل حوال مش تعريف والاخلاص

ويريت يكون معاه مثل لانو والله محتاج ليه شديد .

وشكراً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

6 إجابة على هذا السؤال .

  • 0

 الاعضاء  الثابتة   في  الفئات  يمكن  استخدامها  في  معرفة  عدد  الكائنات  التي  استخدمتها  من  الفئة  الواحدة  

و  الدوال  الثابتة  لا   تأخذ   إلا  قيم  ثابتة       

#include<iostream>#include<string>#include<conio.h>using namespace std;class abc {public:	static int oc ;	abc()	{		oc++;	}	static int getoc()	{		return oc;	}};int abc::oc = 0;int main(){	abc one;	abc two;	abc three;	cout<<abc::oc<<endl;    cout<<abc::getoc()<<endl;	return 0;}

 هذا  و  الله   اعلم 

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

 

الكائنات الثابته داخل الدوال: عند التصريح عنها لابد من وضع قيمة افتراضية لها كالتالي:

struct bag{	int value;	bag() : value(0) {}	bag(int i) : value(i) {}};int main(){	//const int i; // ERROR: incomplete definition	const int i2 = 10; // OK	const int i3(); // ERROR: it thinks that i3 is a function					// that return const int and takes no argument	const bag o; // OK: calling default constructor	const bag o2(); // ERROR: it thinks that o2 is a function					// that return const bag and takes no argument	const bag o3(7); // OK: calling overloaded constructor}

الكائنات الثابته داخل الفئات: هذه الشرح فيها يطول لأن لها حالات بين نوع مركب و نوع أولي (و حتى النوع الأولي إما مشتق من رقم صحيح أو غير ذلك) و إذا كان تم تعريفه بـ static أو لا، يفضل أن تقرأ فضل يتحدث عن ثوابت الفئات لهذا الأمر.

 

الدوال الثابته: يتم تعريفها داخل الفئات ليتم الإعلام انها لا تغير من حالة الكائن و تستخدم مع الكائنات العاديه و هى الوحيده التى يمكن استدعائها من كائن معرف بأنه ثابت:

#include <iostream>using namespace std;struct bag{	bag() : value(0) {}	bag(int i) : value(i) {}	void set_value(int i) { value = i; }	int get_value() const { return value; }	private:	int value;};int main(){	bag b(10);	cout << "b = " << b.get_value() << endl;	b.set_value(15);	cout << "b = " << b.get_value() << endl;		const bag b2(13);	cout << "b2 = " << b2.get_value() << endl;	// b2.set_value(17); // ERROR: b2 has type 'const bag' and set_value is not marked const}

و الله ولي التوفيق

تم تعديل بواسطه C++er
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 وماذا عن هذااا ...

class Rectangle{   public :       Rectangle() = default ;              ....       ....       ....          private :     double hauteur;     double largeur;};
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السطر:

Rectangle() = default ;

يعنى انك تريد من المترجم ان يقوم بتوليد كود المشيد الإفتراضي بدلا من ان تكتبه بنفسك، وهو يماثل عدم وجود أى مشيد داخل الفئه أو ان تكتب مشيد ذات محتوى فارغ (أى لا يقوم بفعل اى شئ).

 

هذا الكود يعمل مع مترجمات C++11 فما بعد.

 

 

 

و الله ولي التوفيق

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

(أى لا يقوم بفعل اى شئ)..... اذا ما الفائدة من كتابته  ..

 

ولماذا هذا الكود ل يعمل  ...أم أن كلاهما ( constructeur par defaut par defaut ).

class Rectangle{   public :       Rectangle() = default ;       Rectangle()       : largeur(0.0),hauteur(0.2)       {}       double getHauteur(){           return hauteur;       }        double getLargeur(){           return largeur;       }   private :     double hauteur;     double largeur;};int main(){     Rectangle r;    cout<<r.getHauteur();    cout<<r.getLargeur();    return 0;}
تم تعديل بواسطه yacinebrca
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مرحبا اعذى والله ماراح انسليك الجميلة دا نخدمكم فى الافراح يا رب رمضان مبارك عليكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .