Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    41

    [C++] Parameter Constructor

    Non mi è molto chiaro come opera il costruttore dei parametri inseriti dall'utente nella seguente classe che sto scrivendo (sto utilizzando uno schema di un libro, ma faccio fatica a capirne il significato):

    questo è l'header

    codice:
    #ifndef _INTEREST_H
    #define _INTEREST_H
    
    
    class InterestCalc{
          private:
                  void init();
                  void copy();
                  
                  double i; //tasso d'interesse
                  double C; //capitale
                  int t, T; //durata o.f, interest freq.
                  double M; //montante
          
          public:
                 //constructors & destructor
                 
                 InterestCalc(); //default constructor
                 InterestCalc(const double& _i, const double& _C, 
                              const int& _t, const int& _T,
                              const double _M); //parameter constructor
                 InterestCalc(const InterestCacl& rhs);//copy constructor
                 InterestCacl& operator = (const InterestCalc& rhs);//assignment
                 virtual ~InterestCalc();//virtual destructor
                 
                 //getters, selector methods for our parameters
                 
                 double geti() const;
                 double getC() const;
                 int gett() const;
                 int getT() const;
                 double getM() const;
                  
                 //calculation methods
                 
                 double simple_calc() const;
                 double compound_calc() const;
                 }
    #endif
    Ora il constructor per i parametri dell'utente nel source l'ho così scritto:

    codice:
    InterestCalc::InterestCalc(const double& _i, const double& _C, const int& _t, const int& _T, const double _M) {
                        i = _i;
                        C = _C;
                        t = _t;
                        T = _T;
                        M = _M;
                        }
    mi sfugge come usare al meglio una classe così scritta. Cioè mi sfugge il ruolo di init() e quello del parameter constructor. Da quel che ho capito:

    Se dichiaro: InterestCalc myYeld; la init inizializza le variabili private con i valori dati in init() giusto?
    Se dichiaro: InterestCalc myYeld(a,b,c,d,e); il param. constructor passa tali valori alle variabili private?

    Se così fosse il problema che mi si pone è questo, se io non ho tutte le variabili a priori ma voglio che le inserisca l'utente, come faccio? devo storarle su delle altre variabili e poi una volta che le ho tutte richiamare il costruttore (e qui perderebbe molto di senso avere quel costruttore, se le inserisco una a una tanto vale che le assegni quando le inserisco...tranne per il fatto da correggere che sono private), o c'è un'altro modo che mi sfugge?

    P.S. mi viene in mente che i getters stanno lì forse proprio per questo:

    codice:
    double InterestCalc::geti() const {return i;}
    quindi quando faccio myYeld.geti() = myi; posso così accedere alle variabili private sigolarmente.

    se così fosse la mia domanda potrebbe diventare: allora a cosa serve avere il param. contructor e il getter? fanno si che io possa inserire tutte le var in una volta o accedere una ad una?

    Grazie
    Ultima modifica di Toxotes; 30-10-2013 a 15:31

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    41
    ahi ahi...altro che getters e param. constructor...qui è pieno di errori (almeno stando al compilatore ), melgio rivedere tutto per bene. In ogni caso il quesito rimane valido in termini generali, ciao ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    41
    mi sono espresso poco chiaramente? o semplicemente avete di meglio da fare (probabile )
    Ultima modifica di Toxotes; 30-10-2013 a 23:11

  4. #4
    I getter in questione restituiscono una copia dei valori interni alla classe, per cui non possono essere usati per modificarli.
    In generale, questa sembra essere una classe in cui i parametri possono essere impostati solo al momento della costruzione, scegliendo o i parametri di default (nel caso del costruzione senza parametri) o specificandoli tramite il costruttore parametrico, per cui se vuoi specificare dei parametri lo puoi fare solo al momento della costruzione. In genere questo è comodo al momento di scrivere la classe perché sai che i parametri sono quelli e non cambieranno, e puoi fare un unico check di validità al momento della costruzione, garantendoti sempre uno stato "coerente" della classe.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.