Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]uso const

    ciao.
    mi devo creare un piccolo promemoria su come utilizzare i reference e il const.
    1)quando devo invocare una funzione che agisce(cambia o imposta il valore)su di un mio oggetto e le modifiche devono persistere al di fuori della funzione A non devo utilizzare i const in quanto devo cambiare il valore .
    posso usare :
    1)passare un puntatore e modificarlo
    f(oggetto * pobj)
    pobj = valore
    2)creare nei parametri della funzione un reference del tipo :
    f(oggetto& obj)
    obj = valore
    tra l'altro coi reference penso di aver capito che mi semplifica la vita in quanto non devo distruggere l'oggetto col delete

    se invece devo utilizzare un oggetto senza modificarlo devo utilizzare i const , qui nascono i miei problemi , che tipo di const e da cosa dipende .
    posso usare
    f(const oggetto& obj)
    , quali sono le casistiche?
    esiste un procedimento valido sempre ?
    o bisogna districarsi tra
    f(const * pObj const)const ecc.. col const prima dopo in mezzo alla fine ecc...

    poi, se voglio richiamare la funzione con l' oggetto const da una funzione const devo anteporre il const alla funzione , cosi:
    f(const oggetto& obj)const

    è giusto?


    grazie.

  2. #2

    Re: [c++]uso const

    Originariamente inviato da giuseppe500
    ciao.
    mi devo creare un piccolo promemoria su come utilizzare i reference e il const.
    1)quando devo invocare una funzione che agisce(cambia o imposta il valore)su di un mio oggetto e le modifiche devono persistere al di fuori della funzione A non devo utilizzare i const in quanto devo cambiare il valore .
    posso usare :
    1)passare un puntatore e modificarlo
    f(oggetto * pobj)
    pobj = valore
    2)creare nei parametri della funzione un reference del tipo :
    f(oggetto& obj)
    obj = valore
    tra l'altro coi reference penso di aver capito che mi semplifica la vita in quanto non devo distruggere l'oggetto col delete
    Con i reference la consuetudine è che il chiamante si preoccupi dell'eventuale cancellazione dell'oggetto (il chiamato deve soltanto usare il parametro reference, non lo deve eliminare); con i puntatori invece dipende dal "contratto" specificato nella documentazione. Dato che un puntatore non documentato è un'ambiguità, in genere è meglio usare i reference se la proprietà dell'oggetto rimane al chiamante o uno smart pointer con trasferimento di ownership (stile auto_ptr) se la proprietà passa al chiamato.
    se invece devo utilizzare un oggetto senza modificarlo devo utilizzare i const , qui nascono i miei problemi , che tipo di const e da cosa dipende .
    Sul const, ti consiglio di leggerti queste FAQ, ripassa a chiedere se hai dubbi.
    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.