friend

ogispan

New member
friend

שלום לכולם! מישהו בבקשה יכול לתת לי הסבר קצר וקולע, מה זה פונקציה חברה? ומה היא קשורה להעמסת אופרטורים. ומהו השימוש של VIRTUAL (מה הייתרון שלו)
 

annefan

New member
בקיצור

פונקציה חברה, היא פונקציה שמחלקה מסוימת מכריזה עליה כחברה, ולכן יש לה גישה גם למשתנים\פונקציות הפרטיים של המחלקה. הקשר להעמסת אופרטורים הוא שלדוגמא את >> ו-<< למחלקה מסוימת מגדירים לא בתוך המחלקה (בגלל רשימות פרמטרים) אלא כפונקציות חברות. virtual מאפשר פולימורפיזם ב-++C, כלומר שבהנתן מצביע לאבא שמצביע על אוביקט מסוג בן, הפעלת פונקציות דרך המצביע יפעיל את הפונקציה ה"נכונה", כלומר זו שמוגדרת באבא.
 

vinney

Well-known member
זו שמוגדרת בבן, התכוונת

VIRTUAL מאפשר לעשות מצביע מסוג מסוים, אשר יצביע לאובייקטים מהסוג הזה, או מכל סוג מורש ממנו, והפעלת פונקציות virtual דרך המצביע הזה תפעיל את המימוש הנכון לכל סוג, ולא את המימוש של הסוג שממנו מוגדר המצביע. למשל:
class a{ public: a(){}; ~a(){}; virtual int do() { return 'a'; }; } class b : a{ b(){}; ~b(){}; int do() { return 'b'; }; } int main(void) { a *ptr = new b; int i = ptr->do(); cout << i; return i; }​
תוכנית זו תדפיס את המס' המתאים למקומו של התו 'b' ב ASCII, למרות שהמצביע הוא מסוג a.
 

annefan

New member
כשמנסים לענות בלחץ

עדיף לא לענות בכלל. אתה צודק כמובן, בבן.
 
תירגע ותנשום עמוק.

לא יורים עליך... אני מקווה.
 
למעלה