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

هل الحل صحيح ام لا

بدأه فوضوية في 24 يوليو 2011 · 4 رد · 519 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اريد ان اعرف هل حلي صح ام لا

فيه كود وعليه اسأله بس ما ادري اذا صح او لا

هذا السؤال

class strange ()
{
Private:
int a;
float b;
};

a- Write a statement that shows the declaration in the class strange to overload the binary operator + as a friend function

b- Write a statement that shows the declaration in the class strange to overload the operator == as a friend function

c- Write a statement that shows the declaration in the class strange to overload the post-increment operator ++ as a friend function

الكود بعد الاجوبه

#include <iostream>
#include <cstdlib> 
using namespace std; 
class strange ()
{
private:
int a;
float b;
friend int operator+(strange &obj,int x);
friend bool operator ==(strange &obj);
friend strange operator++(int);
};
#2

بما ان الدالة صديقة فعليك تحديد طرفي المعامل

يعني عندما تقومين بالتالي

strange s1, s2;
.
.
.
.
.
if (s1 ==s2)
.
.
.
.

سيتم استدعاء الدالة

operator==(s1,s2)

بدلا من

s1.operator==(s2);

التي سوف تستدعى اذا كانت الدالة معرفه كعضو في الكلاس

بالنسبة لمعامل التزايد فاعتقد ان هناك نقطة في اضافة معامل من نوع int من اجل التمييز بينه وبين معامل التزايد المسبق

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#3

شكراً على ردك

لكن ممكن تشرح لي الفرق بين الكودين اللي كتبتها ...

معليش آخي , لكن ما عرفت ماتقصده في النقطه الاخيرة

#4

يعني لو انتي تشتي تخلي الدوال صديقة اعمليه كذا

بالنسبة للدالة الاولى

friend bool operator ==(strange &obj, strange& other);

بالنسبة لهذه الداله :

friend int operator+(strange &obj,int x);

فمنطقك يقول ان نتيجه جمع رقم صحيح مع الاوبجكت نتيجته هي رقم صحيح ! ماذا اذا كان هذا صحيح اما لا يعتمد على تعرفيك للعملية

بالنسبة لدالة التزايد هل تريدين عمل overloading لهذا

++i;

او هذا ؟

i++;

هنا لازم تفرقي اذا كان معامل التزايد المسبق او الملحق علشان تفرقي بينهم

operator++()

تعمل overloading لمعامل التزايد المسق

بينما

operator++(int);

تعمل overloading لمعامل التزايد الملحق

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#5

ششششششششكر من الاعماق ()

يعطيك العافيه

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