Plastic如何具体实现C++的共享
时间: 2023-11-27 17:52:56 浏览: 28
在C++中,可以使用STL的`std::shared_ptr`实现共享。`std::shared_ptr`是一个智能指针,它可以在多个指针之间共享对象的所有权。当一个对象被分配到一个`std::shared_ptr`智能指针上时,它会记录有多少个`std::shared_ptr`共享这个对象,直到最后一个共享指针离开作用域时,对象才被释放。
比如下面的代码:
```c++
#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() { std::cout << "MyClass constructed." << std::endl; }
~MyClass() { std::cout << "MyClass destructed." << std::endl; }
};
int main() {
std::shared_ptr<MyClass> ptr1(new MyClass);
std::shared_ptr<MyClass> ptr2 = ptr1;
std::shared_ptr<MyClass> ptr3 = ptr1;
return 0;
}
```
这个程序中,我们创建了一个`std::shared_ptr`指针`ptr1`,并将一个`MyClass`对象分配给它。然后,我们使用`ptr1`创建了另外两个`std::shared_ptr`指针`ptr2`和`ptr3`。此时,这三个指针共享同一个对象,当所有指针都离开作用域时,对象才会被释放。输出结果为:
```
MyClass constructed.
```
在这个简单的例子中,我们可以看到,对象的析构函数会在所有共享指针离开作用域时调用,而不是在一个指针离开作用域时就立即释放对象。这就是`std::shared_ptr`的共享特性。