Chromium中的scoped_refptr
2019-12-27 本文已影响0人
帆子_8c3a
Chromium中的scoped_refptr类似std::shared_ptr,但用起来稍微复杂一点。
scoped_refptr<T>,其中T是有约束条件的,它必须实现AddRef(),Release(),自己实现T的时候,可以用RefCountedThreadSafe
和RefCounted
,使用具体参考ref_counted.h
例如:
class Test : public base::RefCounted<Test> {
public:
Test(){
std::cout << "Test::Test()" << std::endl;
}
~Test(){
std::cout << "Test::~Test()" << std::endl;
}
};
这里使用了C++里的CRTP idiom,RefCounted
和RefCountedThreadSafe
实现了static多态。