有几个人拿着
(本条路线统一用 g++ -std=c++17 -O0 -Wall 编译)
#include <iostream>
#include <memory>
struct Res {
static int gone;
~Res() { gone++; }
};
int Res::gone = 0;
int main() {
auto a = std::make_shared<Res>();
long c1 = a.use_count(); /* 1 个人拿着 */
long c2 = 0;
{
auto b = a; /* 又多一个人拿着 */
c2 = a.use_count();
} /* b 走了,计数回落 */
long c3 = a.use_count();
std::cout << c1 << "/" << c2 << "/" << c3 << "/" << Res::gone << "\n";
return 0;
}
全部评论