#include class Box { public: Box(); ~Box(); Box(const Box &other); Box & operator=(const Box &other); int getValue() const; void setValue(int value); private: int *value; }; Box::Box() { cout << "DC" << endl; value = new int; *value = 0; } Box::~Box() { cout << "DE" << endl; delete value; } Box::Box(const Box &other) { cout << "CC" << endl; value = new int; *value = *(other.value); } Box &Box::operator=(const Box &other) { cout << "OP" << endl; *value = *(other.value); return *this; } int Box::getValue() const { cout << "GV" << endl; return *value; } void Box::setValue(int val) { cout << "SV" << endl; *value = val; } Box copy(Box b) { Box result; result = b; return result; } int main() { Box a; Box b = a; b.setValue(17); cout << endl; a = copy(b); cout << endl; cout << "a: " << a.getValue () <