#include <iostream>
class A {
public:
int value;
};
void callByValuePtrAssign(A* a) {
a = new A;
a->value = 0;
}
void callByReferencePtrAssign(A* &a) {
a = new A;
a->value = 0;
}
int main() {
A* a = new A;
a->value = 3;
cout << "Initial value:" << a->value << endl;
callByValuePtrAssign(a);
cout << "After call by value:" << a->value << endl;
callByReferencePtrAssign(a);
cout << "After call by reference:" << a->value << endl;
return 0;
}