עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

אופרטור השמה בתורשה C++

Featured Replies

פורסם

שלום רב!

בקוד הבא שמתי לב שהאופרטור שווה משפיע על הפלט של התוכנית.

ממה שלמדנו, וממה שרשום בחומר, אופרטור השמה לא עובר בתורשה

וה

b1=b2

צריך פשוט לדרוס אחד את השני כמו השוואה רגילה

(עובדה שהy בפלט גם נדרס....)

אשמח להבהרות.

תודה רבה

להלן הקוד:

#include <iostream>
using namespace std;

class One
{
protected:
int x;
One(int x1)(x1)
{ cout<<"B one!"<<endl; }

One& operator = (const One& other)
{
if( this != &other )
x=other.x+10;
else
cout<<"S A!";
return *this;
}

virtual void Show ()
{
cout<<"x="<<x<<endl;
}

~One()
{ Show(); }


};

class Two:public One
{
int y;
public:
Two (int x1,int y1):One(x1),y(y1)
{
cout<<"B Two!"<<endl;
}

void Show()
{
One::Show();
cout<<"y="<<y<<endl;
}

~Two()
{ x--; Show();}

};


int main()
{
Two b1(1,2),b2(3,4);
b1=b2;
b1.Show();

}

פורסם

אופרטור הם מתודות לכל דבר. הם עוברים בירושה, ואין שום בעיה להגדיר אותם להיות וירטואליים.

הבעיה היא מהו הטיפוס של הפרמטר שמקבל =operator. האופרטור הזה צריך לקבל טיפוס הזהה לטיפוס של המחלקה, כלומר אצל One הוא מוגדר כמו שהגדרת:

One& operator = (const One& other)

ואצל Two הוא מוגדר כך:

Two& operator = (const Two& other)

גם אם אתה לא מגדיר אותו, הוא מוגדר אוטומטית.

על מנת שיעבור בירושה, הוא צריך להיות מוגדר אצל Two בדיוק כמו שהוא מוגדר ב-One, אבל אז לא תוכל להשתמש בו בשביל להשוות בין שני אובייקטים מטיפוס Two. אבל, אם תשתמש במה שהגדרת כרגע, ותגדיר את b2 להיות מטיפוס One, תראה שההשמה מעתיקה רק את x ולא את y (כי אז b1 ישתמש באופרטור= שהוא ירש מ-One, ולא בזה שהוא הגדיר בעצמו).

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.