拷贝构造函数
shared_ptr(const shared_ptr<T>& other) : ptr_(other.ptr_), ref_count_(other.ref_count_) {
- 函数声明:
shared_ptr(const shared_ptr<T>& other)
- 这是一个拷贝构造函数
- 参数other是一个常量引用
- 用于复制一个已有的智能指针
// 假设我们有两个智能指针
shared_ptr<int> p1(new int(42)); // 第一个智能指针
shared_ptr<int> p2 = p1; // 第二个智能指针
当执行p2 = p1时,会调用拷贝构造函数:
shared_ptr(const shared_ptr<T>& other)
- other就是p1
- const表示不能修改p1
- &表示直接使用p1,而不是复制一份
shared_ptr<int> p1(new int(42)); // p1指向42
shared_ptr<int> p2 = p1; // 调用拷贝构造函数
// 在拷贝构造函数中:
// other 就是 p1
// other.ptr_ 就是 p1.ptr_(指向42的指针)
// other.ref_count_ 就是 p1.ref_count_(引用计数)
2.初始化列表:
: ptr_(other.ptr_), ref_count_(other.ref_count_)
相当于
- ptr_ = other.ptr_:复制指针
- ref_count_ = other.ref_count_:复制引用计数