C++11引入了智能指针,其中最常用的是std::shared_ptr
和std::unique_ptr
。下面是一些智能指针的应用举例:
- 使用
std::shared_ptr
进行资源管理:
#include <memory>
void foo() {
std::shared_ptr<int> sharedPtr(new int(42));
// 共享所有权,可以被多个指针共同使用
std::shared_ptr<int> anotherPtr = sharedPtr;
} // 函数结束时,资源会自动释放
- 使用
std::unique_ptr
实现独占式拥有权:
#include <memory>
class MyResource {
public:
void DoSomething() { /* 操作资源 */ }
};
void bar() {
std::unique_ptr<MyResource> uniquePtr(new MyResource());
uniquePtr->DoSomething();
} // 函数结束时,资源会自动释放
- 在数据结构中使用智能指针:
#include <memory>
#include <vector>
struct Node {
int data;
std::shared_ptr<Node> next;
};
int main() {
std::shared_ptr<Node> node1 = std::make_shared<Node>();
std::shared_ptr<Node> node2 = std::make_shared<Node>();
node1->data = 42;
node1->next = node2;
node2->data = 24;
}
以上是一些简单的示例,展示了C++11智能指针在资源管理和数据结构中的应用。它们帮助我们更方便地管理内存,避免了手动的内存分配和释放操作,提高了代码的安全性和可读性。
内容由零声教学AI助手提供,问题来源于学员提问