Προς το περιεχόμενο

Αντικειμενοστραφής Προγραμματισμός ερώτηση


KremTri

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπερα .

 

Εχω μια ερώτηση για τον αντικειμενοστραφή προγ/μο.

 

Εστω οτι εχω μια κλάση Α και μία κλάση Β η οποία

κληρονομεί τις public μεθόδους της Α.

 

Ο constructor της κλάσης Α δεν ειναι virtual ενώ ο destructor ειναι.

Η ερώτηση μου ειναι αν ειναι σωστό προγ/κα χωρις να δημιουργήσει κανενα πρόβλημα μελλοντικά που ο constructor και ο destructor της κλάσης Β δεν ειναι virtual.

 

 

>class A{
         
        public:
                  A(){}; //constructor
                  virtual ~A(){}; //destructor
};


class B:public A{

        public:
                 B(){};//constructor
                 ~B(){};//destructor
};

 

και κατι επιπλέον ...

 

τι ακριβώς ειναι η κυκλωματική πολυπλοκότητα?

Δημοσ.

το keyword virtual ορίζει ένα interface που αργότερα μπορείς να κάνεις implement.

 

εσύ ορίζεις το interface στην Α, και το κάνεις implement στην Β που κάνει extend την Α.

Νομίζω ότι ακριβώς αυτή είναι η επιθυμητή χρήση

 

Ας δούμε τι λένε και οι υπόλοιποι

Δημοσ.
Καλησπερα .

 

Εχω μια ερώτηση για τον αντικειμενοστραφή προγ/μο.

 

Εστω οτι εχω μια κλάση Α και μία κλάση Β η οποία

κληρονομεί τις public μεθόδους της Α.

 

Ο constructor της κλάσης Α δεν ειναι virtual ενώ ο destructor ειναι.

Η ερώτηση μου ειναι αν ειναι σωστό προγ/κα χωρις να δημιουργήσει κανενα πρόβλημα μελλοντικά που ο constructor και ο destructor της κλάσης Β δεν ειναι virtual.

 

 

>class A{
         
        public:
                  A(){}; //constructor
                  virtual ~A(){}; //destructor
};


class B:public A{

        public:
                 B(){};//constructor
                 ~B(){};//destructor
};

 

και κατι επιπλέον ...

 

τι ακριβώς ειναι η κυκλωματική πολυπλοκότητα?

 

Στη C++ δεν υπάρχουν virtual constructors. Οσον αφορά τους destructors, πρέπει να είναι virtual αν πρόκειται η κλάση να χρησιμοποιηθεί ως base class. Δηλαδή, αν από μια κλάση "παράγεται" κάποια άλλη, τότε η πρώτη πρέπει να έχει virtual destructor, αλλιώς η συμπεριφορά είναι ...undefined όταν το derived object σβήνεται. Αν η παραγόμενη κλάση (Β) δε θα χρησιμοποιηθεί ως base class, δηλαδή ποτέ δεν θα υπάρξει κλάση που να κληρονομήσει από αυτή, τότε δεν υπάρχει πρόβλημα να μήν έχει virtual destructor. Τώρα για το αν υπάρχει τρόπος μια κλαση να οριστεί με τέτοιο τρόπο ωστε να μή γίνεται να υπάρξει άλλη που να κληρονομεί από αυτή, αυτό είναι άλλη κουβέντα.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...