Mostra notizie nelle discussioni
  • Avatar
    Scritto da
    Non Autenticato
    il 2011-10-03 14:54:00.0 alle 2011-10-03 14:54:00.0
    qualcuno conosce il c++?
    mi ritrovo con questa definizione di classe ma non riesco a comprendere alcune parti della sintassi Triste

    class Email {
      String _from, _to, _subject, _body;
      
      public:
      
      Email(
        const String& from,
        const String& to,
        const String& subject,
        const String& body
      ) : _from(from), _to(to), _subject(subject), _body(body) {}
    
      const String& getFrom()    const { return _from; }
      const String& getTo()      const { return _to; }
      const String& getSubject() const { return _subject; }
      const String& getBody()    const { return _body; }
    };


    non riesco a capire la sintassi _from(from) del costruttore, è per casdo analoga a scrivere

    { _from = from; } Newbie, inesperto

    e ancora nelle funzioni getter, perchè l'operatore indirizzo viene usato dopo la definizione del valore restituito?

    ha qualcosa a che fare con la definizione di funzioni relativi alla TLS Newbie, inesperto

    aiutatemi vi prego In lacrime
    • Avatar
      Scritto da
      Non Autenticato
      il 2011-10-03 15:11:00.0 alle 2011-10-03 15:11:00.0
      Re: qualcuno conosce il c++?

      - Scritto da:
      > mi ritrovo con questa definizione di classe ma
      > non riesco a comprendere alcune parti della
      > sintassi
      > Triste
      >
      >
      class Email {
      >   String _from, _to, _subject, _body;
      >   
      >   public:
      >   
      >   Email(
      >     const String& from,
      >     const String& to,
      >     const String& subject,
      >     const String& body
      >   ) : _from(from), _to(to), _subject(subject),
      > _body(body)
      > {}
      > 
      >   const String& getFrom()    const { return
      > _from;
      > }
      >   const String& getTo()      const { return _to; }
      >   const String& getSubject() const { return
      > _subject;
      > }
      >   const String& getBody()    const { return
      > _body;
      > }
      > };

      >
      > non riesco a capire la sintassi _from(from) del
      > costruttore, è per casdo analoga a scrivere
      >
      >
      > { _from = from; } Newbie, inesperto
      >
      > e ancora nelle funzioni getter, perchè
      > l'operatore indirizzo viene usato dopo la
      > definizione del valore
      > restituito?
      >
      > ha qualcosa a che fare con la definizione di
      > funzioni relativi alla TLS
      > Newbie, inesperto
      >
      > aiutatemi vi prego In lacrime

      Nel C++ le variabili private delle classi si mettono sempre con '_' davanti per indicare che sono appunto variabili, private e di una classe.
      • Avatar
        Scritto da
        Non Autenticato
        il 2011-10-03 16:16:00.0 alle 2011-10-03 16:16:00.0
        Re: qualcuno conosce il c++?

        - Scritto da:
        >
        > - Scritto da:
        > > mi ritrovo con questa definizione di classe ma
        > > non riesco a comprendere alcune parti della
        > > sintassi
        > > Triste
        > >
        > >
        class Email {
        > >   String _from, _to, _subject, _body;
        > >   
        > >   public:
        > >   
        > >   Email(
        > >     const String& from,
        > >     const String& to,
        > >     const String& subject,
        > >     const String& body
        > >   ) : _from(from), _to(to), _subject(subject),
        > > _body(body)
        > > {}
        > > 
        > >   const String& getFrom()    const { return
        > > _from;
        > > }
        > >   const String& getTo()      const { return
        > _to;
        > }
        > >   const String& getSubject() const { return
        > > _subject;
        > > }
        > >   const String& getBody()    const { return
        > > _body;
        > > }
        > > };

        > >
        > > non riesco a capire la sintassi _from(from) del
        > > costruttore, è per casdo analoga a scrivere
        > >
        > >
        > > { _from = from; } Newbie, inesperto
        > >
        > > e ancora nelle funzioni getter, perchè
        > > l'operatore indirizzo viene usato dopo la
        > > definizione del valore
        > > restituito?
        > >
        > > ha qualcosa a che fare con la definizione di
        > > funzioni relativi alla TLS
        > > Newbie, inesperto
        > >
        > > aiutatemi vi prego In lacrime
        >
        > Nel C++ le variabili private delle classi si
        > mettono sempre con '_' davanti per indicare che
        > sono appunto variabili, private e di una
        > classe.

        quella è una convenzione e non mi da nessun problema, non riuscivo a capire la sintassi _from(from) con le parentesi tonde e fuori dalle graffe, jambo mi ha spiegato che i tipi primitivi hanno un loro costruttore; a parte che String NON E' un tipo primitivo ma parte della TLS, adesso capisco che viene usato uno dei costruttori della libreria String, continuo a non capire perchè fuori stia fuori delle graffe
    • Avatar
      ☺
      Scritto da
      il 2011-10-03 15:17:00.0 alle 2011-10-03 15:17:00.0
      Trollate totali: 42885
      Re: qualcuno conosce il c++?
      - Scritto da:

      > non riesco a capire la sintassi _from(from) del
      > costruttore, è per casdo analoga a scrivere
      >
      >
      > { _from = from; } Newbie, inesperto

      Si, i tipi primitivi hanno anche loro un constructor.

      > e ancora nelle funzioni getter, perchè
      > l'operatore indirizzo viene usato dopo la
      > definizione del valore
      > restituito?

      Viene ritornato l'indirizzo di una String ?
      Schemino che aiuta:
      http://www.cplusplus.com/doc/tutorial/pointers/

      Java non ha i pointers !
      In Java una String e' immutabile !
      -----------------------------------------------------------
      Modificato dall' autore il 03 ottobre 2011 15.18
      -----------------------------------------------------------
      `"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo
      • Avatar
        Scritto da
        Non Autenticato
        il 2011-10-03 16:23:00.0 alle 2011-10-03 16:23:00.0
        Re: qualcuno conosce il c++?

        - Scritto da: Giambo
        > - Scritto da:
        >
        > > non riesco a capire la sintassi _from(from) del
        > > costruttore, è per casdo analoga a scrivere
        > >
        > >
        > > { _from = from; } Newbie, inesperto
        >
        > Si, i tipi primitivi hanno anche loro un
        > constructor.

        Newbie, inesperto

        String non è un tipo primitivo in C++, fa parte della TLS, al massimo sarà un costruttore della libreria di gestione delle stringhe, continuo ancora a non capire perchè stai fuori delle graffe

        > > e ancora nelle funzioni getter, perchè
        > > l'operatore indirizzo viene usato dopo la
        > > definizione del valore
        > > restituito?
        >
        > Viene ritornato l'indirizzo di una String ?

        sì, ma allora perchè non è:

        const &String getFrom()    const { return _from; }

        con l'operatore & davanti al tipo restituito invece che dietro Newbie, inesperto

        > Schemino che aiuta:
        > http://www.cplusplus.com/doc/tutorial/pointers/

        non serve a nulla

        > Java non ha i pointers !
        > In Java una String e' immutabile !

        buon per voi, purtroppo il lignuaggio di programmazione che ho davanti è C++
        • Avatar
          ☺
          Scritto da
          il 2011-10-03 17:16:00.0 alle 2011-10-03 17:16:00.0
          Trollate totali: 42885
          Re: qualcuno conosce il c++?

          - Scritto da:

          > > > non riesco a capire la sintassi _from(from)
          > del
          > > > costruttore, è per casdo analoga a scrivere
          > > >
          > > >
          > > > { _from = from; } Newbie, inesperto
          > >
          > > Si, i tipi primitivi hanno anche loro un
          > > constructor.
          >
          > Newbie, inesperto
          >
          > String non è un tipo primitivo in C++,

          Hai ragione, mi sono consufo, non so perche' ma avevo letto "int" Perplesso Perplesso

          > continuo
          > ancora a non capire perchè stai fuori delle
          > graffe

          Se tu avessi scritto "_from(from)" nel body del costruttore, non sarebbe funzionato ("_from" e' null), mettendolo fuori probabilmente il compilatore lo trasforma in "_from = new(from)" o qualcosa del genere.

          > > > e ancora nelle funzioni getter, perchè
          > > > l'operatore indirizzo viene usato dopo la
          > > > definizione del valore
          > > > restituito?
          > >
          > > Viene ritornato l'indirizzo di una String ?
          >
          > sì, ma allora perchè non è:
          >
          > const &String getFrom()    const { return
          > _from;
          > }
          >
          > con l'operatore & davanti al tipo restituito
          > invece che dietro
          > Newbie, inesperto

          E' la stessa cosa.

          Credo.

          La mia memoria vacilla In lacrime !

          > > Java non ha i pointers !
          > > In Java una String e' immutabile !
          >
          > buon per voi, purtroppo il lignuaggio di
          > programmazione che ho davanti è
          > C++

          Poteva andarti peggio, poteva essere un VisualCoso o peggio un linguaggio funzionale Deluso !
          `"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo
          • Avatar
            Scritto da
            Non Autenticato
            il 2011-10-03 17:56:00.0 alle 2011-10-03 17:56:00.0
            Re: qualcuno conosce il c++?

            - Scritto da: Giambo
            >
            > - Scritto da:
            >
            > > > > non riesco a capire la sintassi _from(from)
            > > del
            > > > > costruttore, è per casdo analoga a scrivere
            > > > >
            > > > >
            > > > > { _from = from; } Newbie, inesperto
            > > >
            > > > Si, i tipi primitivi hanno anche loro un
            > > > constructor.
            > >
            > > Newbie, inesperto
            > >
            > > String non è un tipo primitivo in C++,
            >
            > Hai ragione, mi sono consufo, non so perche' ma
            > avevo letto "int" Perplesso
            > Perplesso
            >
            > > continuo
            > > ancora a non capire perchè stai fuori delle
            > > graffe
            >
            > Se tu avessi scritto "_from(from)" nel body del
            > costruttore, non sarebbe funzionato ("_from" e'
            > null), mettendolo fuori probabilmente il
            > compilatore lo trasforma in "_from = new(from)" o
            > qualcosa del
            > genere.

            Deluso DelusoIn lacrime
          • Avatar
            Scritto da
            Non Autenticato
            il 2011-10-03 18:56:00.0 alle 2011-10-03 18:56:00.0
            Re: qualcuno conosce il c++?

            - Scritto da: Giambo
            >
            > - Scritto da:
            >
            > > > > non riesco a capire la sintassi _from(from)
            > > del
            > > > > costruttore, è per casdo analoga a scrivere
            > > > >
            > > > >
            > > > > { _from = from; } Newbie, inesperto
            > > >
            > > > Si, i tipi primitivi hanno anche loro un
            > > > constructor.
            > >
            > > Newbie, inesperto
            > >
            > > String non è un tipo primitivo in C++,
            >
            > Hai ragione, mi sono consufo, non so perche' ma
            > avevo letto "int" Perplesso
            > Perplesso
            >
            > > continuo
            > > ancora a non capire perchè stai fuori delle
            > > graffe
            >
            > Se tu avessi scritto "_from(from)" nel body del
            > costruttore, non sarebbe funzionato ("_from" e'
            > null), mettendolo fuori probabilmente il
            > compilatore lo trasforma in "_from = new(from)" o
            > qualcosa del
            > genere.
            >
            > > > > e ancora nelle funzioni getter, perchè
            > > > > l'operatore indirizzo viene usato dopo la
            > > > > definizione del valore
            > > > > restituito?
            > > >
            > > > Viene ritornato l'indirizzo di una String ?
            > >
            > > sì, ma allora perchè non è:
            > >
            > > const &String getFrom()    const { return
            > > _from;
            > > }
            > >
            > > con l'operatore & davanti al tipo restituito
            > > invece che dietro
            > > Newbie, inesperto
            >
            > E' la stessa cosa.
            >
            > Credo.
            >
            > La mia memoria vacilla In lacrime !

            ho notato

            mi sa che devo aspettare la wakka

            > > > Java non ha i pointers !
            > > > In Java una String e' immutabile !
            > >
            > > buon per voi, purtroppo il lignuaggio di
            > > programmazione che ho davanti è
            > > C++
            >
            > Poteva andarti peggio, poteva essere un
            > VisualCoso o peggio un linguaggio funzionale Deluso
            > !

            in realtà è il linguaggio di programmazione dell'Arduino, che a meno delle librerie ad hoc è C++
    • Avatar
      Scritto da
      Non Autenticato
      il 2011-10-03 19:16:00.0 alle 2011-10-03 19:16:00.0
      Re: qualcuno conosce il c++?

      - Scritto da:
      > mi ritrovo con questa definizione di classe ma
      > non riesco a comprendere alcune parti della
      > sintassi
      > Triste
      >
      >
      class Email {
      >   String _from, _to, _subject, _body;
      >   
      >   public:
      >   
      >   Email(
      >     const String& from,
      >     const String& to,
      >     const String& subject,
      >     const String& body
      >   ) : _from(from), _to(to), _subject(subject),
      > _body(body)
      > {}
      > 
      >   const String& getFrom()    const { return
      > _from;
      > }
      >   const String& getTo()      const { return _to; }
      >   const String& getSubject() const { return
      > _subject;
      > }
      >   const String& getBody()    const { return
      > _body;
      > }
      > };

      >
      > non riesco a capire la sintassi _from(from) del
      > costruttore, è per casdo analoga a scrivere

      : _from(from) richiama il costruttore di _from cioè String(const String &s), prima di entrare nel corpo del costruttore di Email.


      >
      >
      > { _from = from; } Newbie, inesperto

      questo non richiama il costruttore di _from però, è un'assegnazione. Il risultato finale è uguale. Probabilmente i compilatori di oggi si accorgono della cosa e non chiamano inutilmente il default constructor.

      >
      > e ancora nelle funzioni getter, perchè
      > l'operatore indirizzo viene usato dopo la
      > definizione del valore
      > restituito?

      è il modo carino del C++ di ritornare un puntatore senza che l'utilizzatore se ne accorga

      >
      > ha qualcosa a che fare con la definizione di
      > funzioni relativi alla TLS
      > Newbie, inesperto
      >
      > aiutatemi vi prego In lacrime
      • Avatar
        Scritto da
        Non Autenticato
        il 2011-10-03 19:22:00.0 alle 2011-10-03 19:22:00.0
        Re: qualcuno conosce il c++?

        - Scritto da:
        >
        > - Scritto da:
        > > mi ritrovo con questa definizione di classe ma
        > > non riesco a comprendere alcune parti della
        > > sintassi
        > > Triste
        > >
        > >
        class Email {
        > >   String _from, _to, _subject, _body;
        > >   
        > >   public:
        > >   
        > >   Email(
        > >     const String& from,
        > >     const String& to,
        > >     const String& subject,
        > >     const String& body
        > >   ) : _from(from), _to(to), _subject(subject),
        > > _body(body)
        > > {}
        > > 
        > >   const String& getFrom()    const { return
        > > _from;
        > > }
        > >   const String& getTo()      const { return
        > _to;
        > }
        > >   const String& getSubject() const { return
        > > _subject;
        > > }
        > >   const String& getBody()    const { return
        > > _body;
        > > }
        > > };

        > >
        > > non riesco a capire la sintassi _from(from) del
        > > costruttore, è per casdo analoga a scrivere
        >
        > : _from(from) richiama il costruttore di _from
        > cioè String(const String &s), prima di entrare
        > nel corpo del costruttore di
        > Email.
        >
        >
        > >
        > >
        > > { _from = from; } Newbie, inesperto
        >
        > questo non richiama il costruttore di _from però,
        > è un'assegnazione. Il risultato finale è uguale.
        > Probabilmente i compilatori di oggi si accorgono
        > della cosa e non chiamano inutilmente il default
        > constructor.

        risposta esauriente, grazie

        > > e ancora nelle funzioni getter, perchè
        > > l'operatore indirizzo viene usato dopo la
        > > definizione del valore
        > > restituito?
        >
        > è il modo carino del C++ di ritornare un
        > puntatore senza che l'utilizzatore se ne
        > accorga

        questo lo devo approfondire, mi pareva di aver già letto qualcosa del genere ma non mi ricordo più bene

        p.s. giambo è tutto fumo e niente arrosto
<softv>

Pagina generata in 76 millisecondi

Utenti attivi: 13 nell'ultimo minuto, 38 negli ultimi cinque minuti, 86 negli ultimi 15 minuti