לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 20-09-2011, 14:46
צלמית המשתמש של flaming ice
  משתמשת נקבה flaming ice flaming ice אינו מחובר  
 
חבר מתאריך: 22.01.08
הודעות: 67
בסי ++ destructor

שלום,
קצת הסתבכתי באיך לבנות destructor למבנה שלי בסי++.(מחלקה של סטודנטים)
מה בדיוק אני אמורה למחוק.
אשמח אם אוכל להעזר במישו , אשלח לו במייל את העבודה שלי.
זה קובץ ההדר שלי:

#pragma once
#include <string>
using namespace std;

struct Course {
int CourseNum;
string CourseName;

void course() {
this->CourseNum=0;
this->CourseName="Non";
}

void course(int CourseNum){
if (CourseNum<1||CourseNum>6) { course();}
if (CourseNum==1) { this->CourseName="C"; this->CourseNum=1;}
if (CourseNum==2) { this->CourseName="Cpp"; this->CourseNum=2;}
if (CourseNum==3) { this->CourseName="Data_Structure"; this->CourseNum=3;}
if (CourseNum==4) { this->CourseName="Algorithms"; this->CourseNum=4;}
if (CourseNum==5) { this->CourseName="Java"; this->CourseNum=5;}
}

};


struct student {
string name, address;
long id;

struct student(){
this->id=0;
this->name=" ";
this->address=" ";

}

struct student(long id, string name,string address){
this->id=id;
this->name=name;
this->address=address;
}

};



class ClassStudent
{

private:
int size;
Course Courses[3];

public:
struct student st;

ClassStudent(void);
ClassStudent(struct student &st);

string getName() const;
string getAddress() const;
long getID() const;

void setName(string name);
void printName() const;
bool setCourse(Course c1, Course c2, Course c3);
bool delCourse(int CourseNum);
void printStudent() ;
int FindStudnt(long id, ClassStudent *sArr, int size);
void ResetCourses( ClassStudent *sArr, int size);

struct student operator=(struct student &st){
struct student temp;
temp.id = st.id;
temp.address =st.address;
temp.name=st.name;
return temp;
}

~ClassStudent(void);
};

_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 20-09-2011, 14:54
צלמית המשתמש של RP.
  משתמש זכר RP. RP. אינו מחובר  
 
חבר מתאריך: 04.11.04
הודעות: 6,986
בתגובה להודעה מספר 1 שנכתבה על ידי flaming ice שמתחילה ב "בסי ++ destructor"

ממה שראיתי לא השתמשת בכלל בהקצאה דינמית של שום דבר, ואין לך איזה שהוא מערך של מצביעים שצריך להפעיל עליהם delete - במקרה כזה הדיסטרקטור הדיפולטי יספיק (כלומר - אתה אפילו לא צריך להגדיר אותו).
ד"א - למה הגדרת את האופרטור = של struct student בתוך classStudent ולא בתוך ה-struct עצמו? זה בכלל מתקמפל ככה?


ו-2 הערות כלליות לגבי פרסום קוד בפורום:
1. תשתמש בתגית code (הכפתור שיש לו צורה שלו סולמית)
2. גם אינדנטציה תעזור

תסכים איתי שהרבה יותר קל לקרוא את הקוד שהוא נראה ככה:
קוד:
#include <string> using namespace std; struct Course { int CourseNum; string CourseName; void course() { this->CourseNum=0; this->CourseName="Non"; } void course(int CourseNum){ if (CourseNum<1||CourseNum>6) { course();} if (CourseNum==1) { this->CourseName="C"; this->CourseNum=1;} if (CourseNum==2) { this->CourseName="Cpp"; this->CourseNum=2;} if (CourseNum==3) { this->CourseName="Data_Structure"; this->CourseNum=3;} if (CourseNum==4) { this->CourseName="Algorithms"; this->CourseNum=4;} if (CourseNum==5) { this->CourseName="Java"; this->CourseNum=5;} } }; struct student { string name, address; long id; struct student(){ this->id=0; this->name=" "; this->address=" "; } struct student(long id, string name,string address){ this->id=id; this->name=name; this->address=address; } }; class ClassStudent { private: int size; Course Courses[3]; public: struct student st; ClassStudent(void); ClassStudent(struct student &st); string getName() const; string getAddress() const; long getID() const; void setName(string name); void printName() const; bool setCourse(Course c1, Course c2, Course c3); bool delCourse(int CourseNum); void printStudent() ; int FindStudnt(long id, ClassStudent *sArr, int size); void ResetCourses( ClassStudent *sArr, int size); struct student operator=(struct student &st){ struct student temp; temp.id = st.id; temp.address =st.address; temp.name=st.name; return temp; } ~ClassStudent(void); };

נערך לאחרונה ע"י RP. בתאריך 20-09-2011 בשעה 14:58.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 20-09-2011, 14:57
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 1 שנכתבה על ידי flaming ice שמתחילה ב "בסי ++ destructor"

זו החלטה של המתכנת מה הוא רוצה שה destructor יעשה... אם זה היה משהו מובן מאליו, המערכת הייתה יודעת לעשות את זה לבד...

ההגיון הבריא אומר למחוק כל מה שלא משתמשים בו יותר - כמובן שצריך להתחשב תמיד בכך שייתכן ו"מישהו אחר" מסתכל על אותו מידע (רפרנס שהועבר למקום אחר, למשל) - ואז אסור למחוק אותו בלי לוודא שה"מישהו האחר" לא ינסה לקרוא מרגע זה והלאה... אחרת המידע הזה נשאר "בשימוש", ואם הזיכרון שמכיל אותו ישוחרר בחזרה למערכת ההפעלה, בפעם הבאה שינסו לגשת לאותו מקום, תהיה שגיאת Access Violation / SIGSEGV
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 00:15

הדף נוצר ב 0.06 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר