Spiegazione breve programma C++

di il
9 risposte

Spiegazione breve programma C++

Ciao ragazzi, mi sono trovato a dover "decifrare" (dover dire l'uscita a video) il seguente programma scritto in C++.
#include <iostream>
using namespace std;

class A{
public:
    int x;
    A(int n=0) { x=n; cout << "A:x=" << x <<endl;}
    void f() {cout << "A:f() x=" << x << endl;}
    virtual ~A() { cout << "via A" << endl;}
};

class B: public A{
A uno;
public:
    B(int n=7):uno(n) { x=n; cout << "B:x=" << x << endl;}
    virtual void f() {cout << "B:f() x=" << x << endl;}
    ~B() { cout << "via B" << endl;}
};

class C: public B{
    B due;
    int x;
public:
    C(int n=1) :B(n) {x=n; cout << "C:x=" << x << endl;}
    void f() { cout << "C:f() x=" << x << endl;}
    ~C() {cout << "via C" << endl;}
};

int main(){
C* pc = new C(3);
B* pb = pc;
A* pa = pc;
pa->f();
pb->f();
pc->f();
delete pb;
return 0;
}
Ci sono diverse cose che non capisco, a cominciare da: cosa vuol dire A(int n=0)? E virtual ~A()?

E nella classe B, cosa significa A uno?

Apparte queste piccole cose, potete spiegarmi cosa effettivamente compie questo programma? Grazie!

9 Risposte

  • Re: Spiegazione breve programma C++

    Apparte queste piccole cose
    Sono piccole, ma basilari
    Non offenderti, ti prego, ma sarebbe difficile spiegarti quello che fa questo programma senza che tu conosca un minimo di C++.
  • Re: Spiegazione breve programma C++

    Lo conosco un minimo di C++ Ho capito i puntatori e che abbiamo a che fare con puntatori a classi, solo non capisco (e non riesco a trovare sui manuali che ho) cosa siano le "piccole" cose da me citate prima. Ti prego di provare a spiegarmele, se non capisco fa niente, ma almeno ci provo
  • Re: Spiegazione breve programma C++

    A(int n=0)?
    n è un parametro del costruttore e il valore di default di n è 0 se n non è specificato; questa è una possibilità delle funzioni C++
    E virtual ~A()?
    Questo lo studi nei capitoli ereditarietà e polimorfismo per il virtual mentre ~A() è il distruttore (e questo lo studi nel capitolo delle classi).
    A uno
    Si tratta di un elemento della classe B, che guarda caso sarà un oggetto di tipo A (questo lo studi sempre nel capitolo delle classi).
    Forse qualcuno può spiegarlo meglio di me; di sicuro nel libro c'è spiegato tutto per bene (spero di averti dato gli agganci giusti).
  • Re: Spiegazione breve programma C++

    Ok, ho capito! Grazie! Per adesso penso di essere a posto, vedo di studiare ancora un pò. Dovessi incontrare altre difficoltà torno
  • Re: Spiegazione breve programma C++

    Sono di nuovo qui Fra ieri e oggi ho fatto diversi passi in avanti (polimorfismo, ereditarietà, maggiore confidenza con i puntatori ecc...) ma ho ancora qualche dubbio sul programma.

    L'ho eseguito e da come uscita a video questo:
    A: x=0
    A:x=3
    B:x=3
    A:x=0
    A:x=7
    
    e altro ancora.
    Le prime due righe ho capito da dove vengono fuori, ma le altre non ci arrivo. Qual è il procedimento che le produce? Grazie e scusate!
  • Re: Spiegazione breve programma C++

    Fra ieri e oggi ho fatto diversi passi in avanti (polimorfismo, ereditarietà, maggiore confidenza con i puntatori ecc...)
    Complimenti! Sapevo di essere una schiappa, a me ci sono voluti mesi per acquisire questi concetti! Tu ce l'hai fatta in un giorno!!!
    Complimenti a parte: per proseguire, modifica le stringhe che il programma stampa a video, per capire quali funzioni/metodi/costruttori/distruttori vengono richiamati...
  • Re: Spiegazione breve programma C++

    Non ho detto che sono diventato un programmatore professionista eh ho giusto fatto qualche passetto in avanti I distruttori invece non ho capito come/quando vengono richiamati, ma adesso mi ci rimetto su e stasera mi faccio risentire
  • Re: Spiegazione breve programma C++

    Non ho detto che sono diventato un programmatore professionista
    Ho detto che mi ci sono voluti mesi per "acquisire" questi concetti, non per utilizzarli professionalmente.
    Il punto principale che vorrei farti notare è che per capire questi concetti bisogna partire dalla teoria e poi scrivere alcuni programmi di prova: fare il contrario (partire da un pezzo di codice e cercare di capirlo) non ha senso; il programmino che hai postato è un tipico esempio che si può trovare alla fine di una lezione sul polimorfismo (lezione che viene dopo l'ereditarietà, che viene dopo la creazione e l'utilizzo di una classe, che viene dopo i costrutti tipici del C++ ...).
  • Re: Spiegazione breve programma C++

    Sono d'accordo con te, ma purtroppo martedi ho un'esame in cui è richiesto proprio un esercizio di questo tipo e devo imparare a saper "decifrare" programmi del genere
Devi accedere o registrarti per scrivere nel forum
9 risposte