Originariamente inviato da zaxis
In questi giorni, mentre studio il C++, mi aggiro per la rete in cerca di tutorials e definizioni. Andando sulla wikipedia, (http://it.wikipedia.org/wiki/C_plus_plus ) , ho trovato questo (considerato un semplice esempio )

codice:
#include <string>
 
class Message {
  std::string subject_;
  std::string from_;
   
public:
  Message (const std::string& subject,
           const std::string& from)
         : subject_(subject),
           from_   (from)
           {}
   
  std::string subject() const { return subject_; }
  std::string from()    const { return from_;    }
};
Ci sono alcune sintassi che non ho ancora visto da nessuna parte...cioe':

(1) Message (const std::string& subject, const std::string& from) e' il costruttore, prende due argomenti, e non fa niente (le parentesi graffe sono vuote), ma cosa sono quei due punti nella linea : subject_(subject), ??
Si chiama constructor initializer list
http://www.blueturnip.com/projects/e...zer-lists.html

(2) subject_ e from_ sono due stringhe, giusto? Che significa allora subject_(subject) ??
costruisce subject_ usando la stringa subject

(3) std::string subject() const { return subject_; } mi pare essere una funzione che restituisce un tipo std::string e non prende argomenti. Ma perchè const si trova tra gli argomenti (parentesi tonde) e gli elementi della funzione (parentesi graffe), come se non appartenesse ne agli argomenti ne' alla funzione?
è un modificatore che si applica al metodo, si usa quando un metodo è costante, cioè non modifica lo stato (i suoi attributi) di un oggetto su cui è applicato.