unique_ptr的被移除所有权的对象任然能执行原先的方法:
#include<iostream>
#include<memory>
#include<string>
#include<map>
class Entity{
public:
Entity(){
std::cout<<"构造函数\n";
}
void print(){
std::cout<<"good job\n";
}
~Entity(){
std::cout<<"析构函数\n";
}
};
int main(){
std::unique_ptr<Entity> a(new Entity());
std::unique_ptr<Entity> b = std::move(a);
// std::cout<<a<<" "<<b;
a->print();
b->print();
return 0;
}
执行结果如下:
构造函数
good job
good job
析构函数
而在转移所有权之后打印a,则会报错,即使这样a的print方法任然可以执行,这是为什么。