#include using namespace std; class Silly { public: void Info(int i) { info = i; } int Info(void) const { return info; } void Name(const string & n) { name = n; } string Name(void) const { return name; } private: int info = 7; string name = "hello"; }; ostream & operator <<(ostream & s, const Silly & other) { s << "Name: " << other.Name() << " Info: " << other.Info(); return s; } int main() { Silly * data = nullptr; Silly * & dataRef = data; data = new Silly; cout << " data: " << data << endl; cout << " dataRef: " << dataRef << endl; cout << " *data = " << *data << endl; cout << " *dataRef = " << *dataRef << endl; cout << endl; delete data; data = nullptr; cout << " data: " << data << endl; cout << " dataRef: " << dataRef << endl; cout << endl; dataRef = new Silly; cout << " data: " << data << endl; cout << " dataRef: " << dataRef << endl; cout << " *data = " << *data << endl; cout << " *dataRef = " << *dataRef << endl; cout << endl; delete dataRef; dataRef = nullptr; cout << " data: " << data << endl; cout << " dataRef: " << dataRef << endl; cout << endl; int x = 10; int & xRef = x; int * xPtr = & xRef; cout << " &x = " << &x << endl; cout << " &xRef = " << &xRef << endl; cout << " xPtr = " << xPtr << endl; cout << " x = " << x << endl; cout << " xRef = " << xRef << endl; cout << " *xPtr = " << *xPtr << endl; cout << endl; *xPtr = -99; cout << " x = " << x << endl; cout << " xRef = " << xRef << endl; cout << " *xPtr = " << *xPtr << endl; return 0; }