struct Example{
class token{
private:
token(){}
friend Example;
};
static std::shared_ptr<Example> create(){
return std::make_shared<Example>(token{});
}
Example(token) : Example() {
}
private:
Example(){}
};
int main() {
Example d{}; //compile error
Example d(token{}); //compile error
auto ptr = Example::create(); //ok
}
备份地址: 【限制对象在堆上创建】