παιδιά το παραπάνω είναι το τρίτο θέμα του σεπτεμβρίου του 10.
μπορεί κάποιος να μου εξηγήσει βήμα προς βήμα τι γίνεται;;;;
ευχαριστώ..
1. Ξεκινώντας στην πρώτη γραμμή της main έχουμε το αντικείμενο a τύπου A. Κατά τη δήλωσή του παίρνουμε k=9. Το *pa δε δείχνει πουθενά, οπότε και δεν έχει καμία τιμή.
2. Όμοια στη δήλωση των αντικειμένων b kai *pb τύπου Β, έχουμε για το b ότι k=4 και A::k=17. Προσοχή δεν αλλάζει η μεταβλητή k sτο a. Το *pb δε δείχνει πουθενά, οπότε και δεν έχει καμία τιμή.
3. cout<<a.k<<"\n"; Προφανώς εκτυπώνει το k του αντικειμένου a που είναι 9.
4. cout<<b.A::k<<"\n"; Εκτυπώνει το A::k στο αντικείμενο b και είναι 17.
5. pa=&a; Ορίζουμε την pa να δείχνει στο αντικείμενο a.
6. pa->out(); Εκτελούμε την out() του a αντικειμένου αφού το pa δείχνει στο a και έχουμε k=k+2, άρα κ=11 και το εκτυπώνει.
7. pb=&b; Ορίζουμε την pb να δείχνει στο αντικείμενο b.
8. pb->out(); Εκτελούμε την out() του b αντικειμένου αφού το pb δείχνει στο b και έχουμε k+=17, άρα το k γίνεται 17+4=21, και A::k+=3, άρα Α::k=17+3=20 και εκτυπώνει το 21.
9. pa=&b; Ξαναορίζουμε την pa να δείχνει στο b αυτή τη φορά.
10. pa->out(); Το pa στέλνει στην out του τύπου Α αντικειμένων το Α::k από το αντικείμενο b. Προσοχή! Το Α::k γίνεται k και το k δε μεταφέρεται αφού δεν έχει οριστεί B::k στο Α. Εκτυπώνει, δηλαδή Α::k+2=22.
Αυτά.... Ελπίζω να σε βοήθησα!
ευχαριστώ πολύ....
στο βήμα 2 όμως δεν μπορώ να καταλάβω γιατί δεν αλλάζει το κ στην Α κλάση