Const int vs int

di il
6 risposte

Const int vs int

Secondo voi è corretto l'utilizzo dell'attributo const nel parametro formale del costruttore seguente?
Il testo originale lo omette.
Distributore::Distributore(const int N) {
    if (N<=0 || N>9)
        N = 3;
    
    numRipiani = N;
    mat = new int[numRipiani * MAX_SLOT];
    for (int i=0;i<numRipiani*MAX_SLOT; i++)
        mat[i] = 1;
}

nel main invece la definzione dell'oggetto classe avviene in questo modo:
Distributore d(3);
Nel testo originale viene riportato come parametro formale soltanto:
Distributore::Distributore(int N) {
A mio avviso se nella chiamata ci inserisco sempre una costante ha senso anteporre il const, ma vorrei una vostra opinione
graze

6 Risposte

  • Re: Const int vs int

    Premesso che ti è stato consigliato già molte volte, perchè non provi a compilare il codice?

    In ogni caso quel codice non può mai compilare perchè stai cercando di modificare (N=3) un argomento definito costante.

    Un'osservazione... se un argomento è definito costante tanto vale passarlo per riferimento onde evitare inutili copie.
  • Re: Const int vs int

    Nippolo ha scritto:


    Premesso che ti è stato consigliato già molte volte, perchè non provi a compilare il codice?

    In ogni caso quel codice non può mai compilare perchè stai cercando di modificare (N=3) un argomento definito costante.

    Un'osservazione... se un argomento è definito costante tanto vale passarlo per riferimento onde evitare inutili copie.

    Stavolta non mi prendete impreparato!
    Il codice lo avevo compilato e non mi dava errori, purtroppo mi sono reso conto di aver riportato un codice diverso. Pardon!
  • Re: Const int vs int

    Nippolo ha scritto:


    ...
    Un'osservazione... se un argomento è definito costante tanto vale passarlo per riferimento onde evitare inutili copie.
    @nippolo tu, un intero, lo passi per reference?
    Studiati che cosa e' un refernce: E' UN PUNTATORE (e' responsabilita' del compilatore ottenerlo e accederci), che passi per COPIA!
    Quindi, per gli interi, la tua osservazione non e' valida.
  • Re: Const int vs int

    migliorabile ha scritto:


    tu, un intero, lo passi per reference?
    Infatti non mi tornava sta cosa, se ho un argomento attuale costituito da un valore intero, quindi una costante, secondo me è lecito utilizzare l'attributo const ma la parola agli esperti.
  • Re: Const int vs int

    @nippolo tu, un intero, lo passi per reference?
    Studiati che cosa e' un refernce: E' UN PUNTATORE (e' responsabilita' del compilatore ottenerlo e accederci), che passi per COPIA!
    Quindi, per gli interi, la tua osservazione non e' valida.
    Partirei dal fatto che lo standard C++ non definisce come il compilatore debba implementare i riferimenti e anche se la maggior parte delle volte sono implementati come un puntatore costante, non escluderei del tutto casi particolari per cui il compilatore è ottimizzato in modo da non usare nessun puntatore.
    Detto questo lo so che un riferimento è implementato internamente come un puntatore e che quindi il passaggio per riferimento avviene sempre per copia di un puntatore. Quindi è ovvio che se passi un int ad una funzione avverrà sempre 1 COPIA (di un puntatore nel passaggio per riferimento e di un int nel passaggio per valore).
    Premesso che non avendo mai studiato informatica (mi sono avvicinato alla programmazione per hobby) non so quali siano le dimensioni di una variabile intera o di una variabile puntatore, vorrei far notare che oltre al numero di copie andrebbe considerata anche la dimensione della copia.
    In ogni caso il mio era un consiglio generale che andava al di là del caso specifico...
    Magari mi sbaglio, ma ho come l'impressione che nel tuo post utilizzi un tono inutilmente provocatorio...
    Infatti non mi tornava sta cosa, se ho un argomento attuale costituito da un valore intero, quindi una costante, secondo me è lecito utilizzare l'attributo const ma la parola agli esperti.
    Non ho capito, a quale codice ti riferisci?
    Il codice riportato nel post iniziale come già detto non potrà mai compilare.
  • Re: Const int vs int

    Nippolo ha scritto:


    In ogni caso il mio era un consiglio generale che andava al di là del caso specifico...
    Magari mi sbaglio, ma ho come l'impressione che nel tuo post utilizzi un tono inutilmente provocatorio...
    Sono perfettamente d'accordo con te, il clima non è dei migliori ed ho la sensazione che si ecceda in eccessive polemiche laddove le persone desiderano imparare e confrontarsi ma forse il livello di accesso al forum non è basic ma advanced.
    A mio avviso ci sono ben altri approcci per far capire alle persone laddove sbagliano o potenzialmente dove potrebbero, i toni di @migliorabile mi sembrano eccessivi.
    Ci potrebbero essere incomprensioni ma studiati il C non mi sembra una risposta molto "professionale".
Devi accedere o registrarti per scrivere nel forum
6 risposte