Stavo leggendo dei costruttori di copia per le strutture e ho trovato questo esempio:
#include <iostream>
#include <string>
using namespace std;
struct SomeData {
int * pd;
string id;
SomeData(SomeData & ref) {
cout << "Copy Constructor called" << endl;
pd = new int (*ref.pd);
id = "Copy Constructed";
}
SomeData(string name) {
pd = new int(0);
id = name;
cout << "Constructor for " << id << endl;
};
~SomeData() {
cout << "Destructor for " << id << endl;
delete pd;
}
};
int main() {
SomeData s("First");
*s.pd = 9;
SomeData s2=s;
cout << *s2.pd << endl;
return 0;
}
in main
, si accede al membro pd
di SomeData
utilizzando la dereferenziazione,
ma perché è così, non è il modo corretto è
s->pd=9;
perché è stato scritto così nell'esempio?