I moved smart pointer ownership from pa to pb. A method still worked after moving ownership although the address of the pa is NULL. Is this possible if a method doesn't touch any member variable in a class?
#include <iostream>
#include <memory>
class A {
int* data;
public:
A(){
data = new int[100];
std::cout << "Resources acquisition\n";
}
void some(){
std::cout << "Same as ordinary pointer " << "\n";
}
~A() {
std::cout << "Resource release\n";
delete[] data;
}
};
void do_something(){
std::unique_ptr<A> pa(new A());
// tranfer ownership from pa to pb
std::unique_ptr<A> pb = std::move(pa);
// address is 0x0
std::cout << pa.get() << std::endl;
// This is still working
pa->some();
}
int main() {
do_something();
return 0;
}