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), ??

(2) subject_ e from_ sono due stringhe, giusto? Che significa allora subject_(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? Non era piu' corretto
qualcosa come

std::string subject() { return const subject_; }

??

Lo so, sono ignorante...abbiate pazienza sto facendo del mio meglio...