#include <iostream>
using namespace std;
class A {
    int *val;
public:
    A() { val = new int; *val = 0; }
    A(A &a) { val = new int; *val = a.get(); }
    int get() { return ++(*val); }
};
int main() {
    A a,b = a;
    cout << a.get() << b.get();
    return 0;
}
I have trouble working this out. I am getting confused on how *val gives an output of 22 for both object.
 
     
     
    