使用weak_ptr 就能解决前面提到的循环引用的问题,随便修改其中一个智能指针为weak_ptr类型即可。 struct Father { shared_ptr<Son> son_; }; struct Son { weak_ptr<Father> father_; }; int main() { auto father = make_shared<Father>(); auto son = make_shared<Son>(); father->son_ = son; ...
标准C++的思路是提供编译期反射(相关提案名为Reflection TS),目前进度喜人,距离可用大概需要3~6年。
由于unique_ptr是不可移动的,复制构造和赋值被禁用。这个C++类现在尽可能安全。