C++ Const فنکشن کی مثالیں۔

C Const Fnkshn Ky Mthaly



یہ مضمون 'const' کلیدی لفظ پر توجہ مرکوز کرتا ہے جو C++ میں فنکشن کے ساتھ استعمال ہوتا ہے۔ 'const' کلیدی لفظ کو مستقل قدر کہا جاتا ہے جسے ہم پروگرام کے عمل کے دوران تبدیل نہیں کرسکتے ہیں۔ C++ میں 'const' فنکشنز وہ فنکشنز ہیں جن کے ڈیٹا ممبران کو ان کی کلاس میں تبدیل کرنے پر پابندی ہے۔ 'cont' فنکشنز کو مؤثر طریقے سے استعمال کیا جاتا ہے کیونکہ وہ آبجیکٹ کی قدر میں غیر متوقع تبدیلیوں سے بچ سکتے ہیں۔

مثال 1: C++ میں کانسٹ ممبر فنکشن کا پروگرام

یہاں، ہمارے پاس const ممبر فنکشن کا ایک سادہ پروگرام ہے:

# شامل کریں
استعمال کرتے ہوئے نام کی جگہ std ;
کلاس میری جماعت {
int ایک پر ;
عوام :
میری جماعت ( int n = 0 ) {
ایک پر = n ;
}
int getValue ( ) const {
واپسی ایک پر ;
}
} ;
int مرکزی ( ) {
const مائی کلاس c ( 30 ) ;
مائی کلاس c1 ( 5 ) ;
cout << نمبر استعمال کرتے ہوئے آبجیکٹ c : ' << c getValue ( ) ;
cout << ' \n آبجیکٹ c1 کا استعمال کرتے ہوئے نمبر : ' << c1۔ getValue ( ) ;
واپسی 0 ;
}

ابتدائی طور پر، ہم ہیڈر فائل کی وضاحت کرتے ہیں جو پروگرام کے ان پٹ/آؤٹ پٹ اسٹریمز کو قابل بناتی ہے۔ پھر، ہم 'MyClass' کلاس سیٹ کرتے ہیں جہاں ہم 'num' متغیر اور MyClass() فنکشن کے ممبر فنکشنز اور getVal() فنکشن کا اعلان کرتے ہیں۔ MyClass() فنکشن کے اندر، ہم '0' کی قدر کے ساتھ 'n' پیرامیٹر سیٹ کرتے ہیں۔ پھر، 'n' دلیل کو 'num' متغیر کو تفویض کیا جاتا ہے۔ اگلا، ہم getVal() فنکشن کو 'const' کلیدی لفظ کے ساتھ کال کرتے ہیں، جس سے ظاہر ہوتا ہے کہ فنکشن کال پر آبجیکٹ کی موجودہ حالت میں ترمیم نہیں کی جا سکتی ہے۔ getVal() فنکشن 'num' ممبر متغیر کو لوٹاتا ہے۔







آخر میں، ہم main() فنکشن تک پہنچ جاتے ہیں۔ یہاں، ہم MyClass() فنکشن کے 'c' اور 'c1' آبجیکٹس کی وضاحت کرتے ہیں اور ان آبجیکٹ کو ویلیوز بھی دیتے ہیں۔ 'c' آبجیکٹ کو 'const' کلیدی لفظ کے ساتھ سیٹ کیا گیا ہے، جس سے ظاہر ہوتا ہے کہ اس آبجیکٹ کو تفویض کردہ قدر میں ترمیم نہیں کی جا سکتی۔



کانسٹ ممبر فنکشن کا آؤٹ پٹ جسے آبجیکٹ کے ذریعہ بلایا جاتا ہے درج ذیل میں دکھایا گیا ہے۔ اس طرح، ہم ممبر فنکشن اور آبجیکٹ کے ساتھ 'const' کلیدی لفظ استعمال کر سکتے ہیں:







مثال 2: C++ میں کلاس کے باہر کانسٹی ممبر کے فنکشن کا پروگرام

اب، ہمارے پاس ایک اور نفاذ ہے جہاں const ممبر فنکشن کو کلاس ڈیفینیشن سے باہر بیان کیا جاتا ہے اور const ممبر فنکشن کا استعمال کرتے ہوئے پرائیویٹ ممبر متغیر ویلیو سیٹ اور بازیافت کرتا ہے۔

# شامل کریں
استعمال کرتے ہوئے نام کی جگہ std ;

کلاس نیوکلاس {
int میں ;

عوام :
باطل سیٹ_ریکارڈ ( int ) ;

int get_record ( ) const ;
} ;

باطل نیوکلاس :: سیٹ_ریکارڈ ( int ایکس ) { میں = ایکس ; }
int نیوکلاس :: get_record ( ) const { واپسی میں ; }

int مرکزی ( )
{
نیوکلاس سی ;
c سیٹ_ریکارڈ ( 10 ) ;
cout << c get_record ( ) ;

واپسی 0 ;
}

یہاں، ہم سب سے پہلے ایک کلاس قائم کرتے ہیں، 'NewClass'، جہاں ہم 'i' متغیر کو شروع کرتے ہیں جسے نجی رکھا جاتا ہے۔ اس کے بعد، ہمارے پاس ایک عوامی کلیدی لفظ ہے جہاں set_record() اور get_record() ممبر فنکشنز کی وضاحت کی گئی ہے۔ set_record() ممبر فنکشن کو 'i' متغیر کی ویلیو سیٹ کرنے کے لیے استعمال کیا جاتا ہے اور get_record() فنکشن کو یہاں 'i' متغیر کی ویلیو واپس کرنے کے لیے استعمال کیا جاتا ہے۔ نوٹ کریں کہ ہم get_record() ممبر فنکشن کے ساتھ 'const' کلیدی لفظ استعمال کرتے ہیں جو اسے const ممبر فنکشن کے طور پر ظاہر کرتا ہے، اور آبجیکٹ کی حالت میں ترمیم نہیں کی جا سکتی۔ اس کے بعد، ہمارے پاس 'i' متغیر ویلیو سیٹ کرنے کے لیے ایک set_record() فنکشن کی تعریف ہے۔



اسی طرح، ہمارے پاس get_record() فنکشن ڈیفینیشن ہے جو 'i' متغیر ویلیو کو بازیافت کرتی ہے۔ پھر، ہم مین() فنکشن سیٹ کرتے ہیں جہاں ہمارے پاس 'NewClass' کلاس کے 'c' آبجیکٹ کا اعلان ہوتا ہے۔ پھر، 'set_record'، ایک نان کونسٹ ممبر فنکشن، 'z' متغیر کو ایک قدر تفویض کرنے کے لیے کہا جاتا ہے۔ آگے بڑھتے ہوئے، ہم 'i' کی ویلیو پرنٹ کرنے کے لیے get_record() const ممبر فنکشن کو کال کرتے ہیں۔

پرائیویٹ ممبر متغیر کی ویلیو کو کانسٹ ممبر فنکشن کہتے ہیں اور اسے درج ذیل پرامپٹ میں دکھایا گیا ہے۔

مثال 3: کلاس کے باہر ایک آزاد فنکشن کے طور پر بیان کردہ کانسٹ ممبر فنکشن کا پروگرام

تاہم، ہم کانسٹ ممبر فنکشن کا ایک اور کیس لاگو کرتے ہیں جہاں 'const' کلیدی لفظ کے ساتھ ممبر فنکشن کو کلاس کے باہر اسٹینڈ اسٹون فنکشن کے طور پر بلایا جاتا ہے۔

# شامل کریں
استعمال کرتے ہوئے نام کی جگہ std ;
کلاس مساوات {
int n1، n2 ;
عوام :
باطل set_equation ( int ایکس، int اور )
{
n1 = ایکس ;
n2 = اور ;
}
باطل show_equation ( )
{
cout << 'مساوات یہ ہے:' << n1 << '+' << n2 << 'ب' << endl ;
}
دوست باطل یہ مزہ ہے ( const مساوات ) ;
} ;
باطل یہ مزہ ہے ( const مساوات اعتراض )
{
cout << 'فنکشن کا استعمال کرنے والی مساوات یہ ہے:' << اعتراض n1 << '+' << اعتراض n2 << 'ب' << endl ;
}
int مرکزی ( )
{
مساوات اعتراض ;
اعتراض set_equation ( 5 ، 8 ) ;
اعتراض show_equation ( ) ;
یہ مزہ ہے ( اعتراض ) ;
}

یہاں، ہم 'Equation()' کلاس بناتے ہیں اور پھر 'n1' اور 'n2' متغیرات کا اعلان کرتے ہیں۔ یہاں، ہم 'n1' اور 'n2' متغیرات کی قدریں سیٹ کرنے کے لیے set_Equation() ممبر فنکشن بھی شامل کرتے ہیں۔ show_Equation() فنکشن مساوات کو دکھاتا ہے جو ان متغیرات کو استعمال کرتے ہوئے تیار کیا جاتا ہے۔

اس کے بعد، ہمارے پاس funIs() کا فنکشن ڈیکلریشن ہے جس کی تعریف 'friend' کلیدی لفظ کے ذریعے کی گئی ہے۔ یہ 'دوست' کلیدی لفظ ہمیں 'مساوات' کلاس کے پرائیویٹ ممبر تک رسائی کی اجازت دیتا ہے۔ اس کے بعد، ہم کلاس کے باہر 'funIs()' فرینڈ فنکشن کو کال کرتے ہیں اور 'Equation' کلاس کے 'obj' پیرامیٹر کو const کے طور پر داخل کرتے ہیں۔ آخر میں، ہمارے پاس ایک مین () فنکشن ہے جہاں ہم 'مساوات' کلاس کے آبجیکٹ کا اعلان کرتے ہیں۔ پھر، ہم set_Equation() فنکشن کا استعمال کرتے ہوئے 'n1' اور 'n2' متغیرات کی قدریں سیٹ کرتے ہیں۔ 'n1' اور 'n2' متغیرات show_Equation() فنکشن کا استعمال کرتے ہوئے اپنی اقدار کو ظاہر کرنے کے لیے استعمال کیے جاتے ہیں۔ آخر میں، ہم مساوات کو ظاہر کرنے کے لیے 'Equation' کلاس کے 'funIs' فرینڈ فنکشن کو کہتے ہیں۔

const دوست فنکشن کا استعمال کرتے ہوئے مساوات اور مساوات پرامپٹ پر دکھائے جاتے ہیں:

مثال 4: C++ میں قدر کو اپ ڈیٹ کرنے کے لیے کانسٹی ممبر فنکشن کا پروگرام (بدترین صورت)

یہ پروگرام کانسٹ ممبر فنکشن کے بدترین منظر نامے کو ظاہر کرتا ہے جہاں ہم 'کانسٹ ممبر فنکشن کے اندر' نامی متغیر کی قدر میں ترمیم کرنے کی کوشش کرتے ہیں۔

# شامل کریں
استعمال کرتے ہوئے نام کی جگہ std ;

کلاس ڈیٹا {
int میں ;

عوام :
باطل سیٹ ویلیو ( int میں ) { میں = میں ; }
int getValue ( ) const
{

++ میں ;
واپسی میں ;
}

} ;

int مرکزی ( )
{
ڈیٹا ڈی ;
d سیٹ ویلیو ( بیس ) ;
cout << endl << d getValue ( ) ;

واپسی 0 ;
}

یہاں، ہم سب سے پہلے 'ڈیٹا' کلاس بناتے ہیں اور کلاس کے اندر 'v' متغیر کا اعلان کرتے ہیں۔ اس کے بعد، ہم 'پبلک' کی ورڈ سیٹ کرتے ہیں اور پھر 'setValue()' کے کلاس ممبر فنکشن کا اعلان کرتے ہیں جو کلاس کے کنسٹرکٹر اور getValue() کی نمائندگی کرتا ہے جو کلاس کے گیٹر ممبر فنکشن کی نشاندہی کرتا ہے۔ setValue() فنکشن 'i' متغیر کو بطور پیرامیٹر لیتا ہے۔ یہ 'i' متغیر 'v' ممبر متغیر کو تفویض کیا گیا ہے۔

اس کے بعد، ہمارے پاس getValue() فنکشن کی تعریف ہے جہاں ہم 'v' متغیر کی قدر کو بازیافت کرتے ہیں۔ چونکہ getValue() فنکشن کا اعلان 'const' کلیدی لفظ کے ساتھ کیا گیا ہے، یہ ظاہر کرتا ہے کہ 'v' متغیر کی قدر کو کسی بھی صورت میں اپ ڈیٹ نہیں کیا جا سکتا۔ تاہم، ہم جان بوجھ کر اس کی قدر کو تبدیل کرنے کے لیے 'v' متغیر کو بڑھانے کی کوشش کرتے ہیں۔ جب پروگرام اس مرحلے تک پہنچتا ہے، ایک غلطی پھینک دی جاتی ہے۔ آخر میں، ہمارے پاس مین() فنکشن کال ہے جہاں ہم 'ڈیٹا' کلاس کے 'd' آبجیکٹ کی وضاحت کرتے ہیں اور اس 'd' آبجیکٹ کے لیے '20' کی ویلیو سیٹ کرتے ہیں۔ اس کے بعد، ہم آبجیکٹ کی 'd' ویلیو حاصل کرنے کے لیے getValue() فنکشن کو کال کرتے ہیں۔

پرامپٹ پچھلے نفاذ کے نتائج پیدا کرتا ہے جہاں یہ '++v' پر ایک ایرر دیتا ہے کیونکہ ہمیں const ممبر فنکشن آبجیکٹ کی قدر میں ترمیم کرنے کی اجازت نہیں ہے:

نتیجہ

آخر میں، ہم C++ کے const فنکشن میں ڈوبتے ہیں جو پروگرام کی قدر میں حادثاتی تبدیلیوں سے بچنے کے لیے استعمال ہوتا ہے۔ C++ میں کانسٹ ممبر فنکشنز صرف پڑھنے کے لیے فنکشنز ہیں جن کی اشیاء میں ترمیم کی اجازت نہیں ہے جس پر اسے کال کیا جاتا ہے۔ ہم نے C++ میں اس کی فعالیت کو ظاہر کرنے کے لیے const فنکشن کے مختلف منظرنامے بھی نافذ کیے ہیں۔