- Codice:
struct Sales_data
{
std::string bookNo;
unsigned units sold = 0;
double revenue = 0.0;
std::string isbn() const {return bookNo;}
Sales_data& combine(const Sales_data&);
double avg_price() const;
};
Sales_data total;
if(read(cin, total))
{
Sales_data trans;
while(read(cin, trans))
if(total.isbn() == trans.isbn())
total.combine(trans);
else
{
print(cout, total) << endl;
total = trans;
}
print(cout, total) << endl;
}
else
{
cerr << "No Data!" << endl;
}
}
Ovviamente il codice così com'è scritto non è compilabile, ma non importa questo, importa capire cosa dice il libro.
Dice che quando chiamiamo una funzione membro, noi la chiamiamo su richiesta di un oggetto come per esempio total.isbn(). Quel che non capisco è questo: continua dicendo che quando isbn si riferisce ai membri di Sales_data (come bookNo), esso si sta riferendo implicitamente ai membri dell'oggetto sui quali la funzione è stata chiamata. In questa chiamata quando isbn restituisce bookNo sta implicitamente restituendo total.bookNo e lo fa attraverso un parametro implicito, un puntatore chiamato this. Questo serve a tenere traccia in memoria dell'oggetto total. Non capisco. Cosa c'entra total con bookNo? Sono due variabili diverse, come è possibile scrivere total.bookNo. bookNo non è un metodo.
Potreste chiarirmi questo per favore?