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

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

بدأه alnzir في 2 يوليو 2014 · 6 رد · 1,666 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

وشكراً

#2

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

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

#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

للإطلاع  على جديد  الكتب من تأليفي


 


الطريق لاحتراف تطوير المواقع   ج1 | ج2 | ج3 | ج4


 


                    4Colors | Break Out | Classic Snake | لعبة السودوكو - 2014  |  لعبة  XO                      


 


Help Dodo


 


^_^


 

#3

"الكائنات الثابته" لها اكثر من معني، فقد تكون كائنات معرفة داخل فئه أو داخل دالة و يوجد اختلاف بينهم، أيضا الدوال الثابته هى التى يتم تعريفها داخل الفئه و يتم تحديد انها 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 في 4 يوليو 2014 في 01:35

مدونتي: C++ Tips and Tricks

#4

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

class Rectangle{

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

elearning_image.jpg

#5

السطر:

Rectangle() = default ;

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

 

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

 

 

 

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

1

مدونتي: C++ Tips and Tricks

#6

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

 

ولماذا هذا الكود ل يعمل  ...أم أن كلاهما ( 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 في 4 يوليو 2014 في 14:52

elearning_image.jpg

#7

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

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

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

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

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

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