ABA


"מישהו יכול להסביר לי קצת על שימוש בVIRTUAL"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #13841 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13841
aaBlueDragon

   15:04   13.01.07   
אל הפורום  
  מישהו יכול להסביר לי קצת על שימוש בVIRTUAL  
 
   אני מדבר על VIRTUAL בC++.
הבנתי את הרעיון של זה ולמה זה קיים אבל אני לא בטוח איך ליישם את זה.
מישהו בבקשה יכול לתת לי דוגמה של DERIVED CLASS שמשתמש בפונציית
VIRTUAL ושל השימוש הזה בכלל?
תודה מראש.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אני אתן דוגמא קטנה (לא בקוד) Nesher  13.01.07 15:15 1
     תודה אבל.. aaBlueDragon 14.01.07 18:09 2
         אני בטוח שחיפוש קצרצר בגוגל יעזור לך.. :) Nesher  14.01.07 19:51 3
  מכתב MULI 16.01.07 19:28 4

       
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק
   15:15   13.01.07   
אל הפורום  
  1. אני אתן דוגמא קטנה (לא בקוד)  
בתגובה להודעה מספר 0
 
נגיד ויש לך מחלקה שנקראת "צורה" שיש לה מתודה "צייר"
יש לך כמה מחלקות מסוג צורה שיורשות: מלבן, עיגול, משולש..
כל צורה מציירת בצורה אחרת (לפי מס' הנק' שיש לה או מאפיינים שלה) או אפילו זהה
אז המתודה צייר תממוש בכל מתודת צורה בדרך אחרת או תשתמש בציור של מחלקת הבסיס...
לכן במחלקה הראשית הפונ' צריכה להיות virtual או אפילו pure virtual (שמחלקות יורשות חייבות לממש במקום להשתמש במימוש של מחלקת הבסיס)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
aaBlueDragon

   18:09   14.01.07   
אל הפורום  
  2. תודה אבל..  
בתגובה להודעה מספר 1
 
   ערכתי לאחרונה בתאריך 14.01.07 בשעה 18:09 בברכה, aaBlueDragon
 
תודה אבל כמו שציינתי בהודעה, אני יודע כבר את הרעיון של זה ולמה זה קיים והכל.
מה שלא הבנתי זה בדיוק איך ליישם את זה, אני ניסיתי כבר ולא הצלחתי, מה שאני צריך זאת פשוט דוגמה כתובה קצרה בשפת C++ זה הכל.
תודה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק
   19:51   14.01.07   
אל הפורום  
  3. אני בטוח שחיפוש קצרצר בגוגל יעזור לך.. :)  
בתגובה להודעה מספר 2
 

לי אישית לא נראה לי שיש לי דוגמא לזה כל כך.. ככל שזכור לי ^_^


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MULI

   19:28   16.01.07   
אל הפורום  
  4. מכתב  
בתגובה להודעה מספר 0
 
  

//: C15:Instrument4.cpp
// Extensibility in OOP
#include <iostream>
using namespace std;
enum note { middleC, Csharp, Cflat }; // Etc.

class Instrument {
public:
virtual void play(note) const {
cout << "Instrument::play" << endl;
}
virtual char* what() const {
return "Instrument";
}
// Assume this will modify the object:
virtual void adjust(int) {}
};

class Wind : public Instrument {
public:
void play(note) const {
cout << "Wind::play" << endl;
}
char* what() const { return "Wind"; }
void adjust(int) {}
};

class Percussion : public Instrument {
public:
void play(note) const {
cout << "Percussion::play" << endl;
}
char* what() const { return "Percussion"; }
void adjust(int) {}
};

class Stringed : public Instrument {
public:
void play(note) const {
cout << "Stringed::play" << endl;
}
char* what() const { return "Stringed"; }
void adjust(int) {}
};

class Brass : public Wind {
public:
void play(note) const {
cout << "Brass::play" << endl;
}
char* what() const { return "Brass"; }
};

class Woodwind : public Wind {
public:
void play(note) const {
cout << "Woodwind::play" << endl;
}
char* what() const { return "Woodwind"; }
};

// Identical function from before:
void tune(Instrument& i) {
// ...
i.play(middleC);
}

// New function:
void f(Instrument& i) { i.adjust(1); }

// Upcasting during array initialization:
Instrument* A = {
new Wind,
new Percussion,
new Stringed,
new Brass,
};

int main() {
Wind flute;
Percussion drum;
Stringed violin;
Brass flugelhorn;
Woodwind recorder;
tune(flute);
tune(drum);
tune(violin);
tune(flugelhorn);
tune(recorder);
f(flugelhorn);
} ///:~



שים לב שהמחלקות היורשות לא צריכות לכתוב virtual גם.. אפשר אבל זה סתם מבלבל

זה לקוח מהספר thinking in c++ שניתן להוריד אותו חופשי מהאתר
mindviewinc.com

ספר מ-ע-ו-ל-ה ללמוד C++ (למי שכבר יודע C)

יש בספר גם את שאר ההסברים בנוגע לקוד שהבאתי פה.. שווה לבדוק


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net