RAII
发表于:2024-12-22 | 分类: C++
字数统计: 223 | 阅读时长: 1分钟 | 阅读量:

RAII

RAII

RAII(资源即初始化)

  • 作用:避免内存泄漏(对象未销毁、文件未关闭等)
  • 体现:类的析构函数(在其中销毁对象、关闭资源);智能指针(引用计数,超出作用域自动销毁)

与JAVA GC的区别

  • JDK GC回收对象,对于文件关闭等不处理,通过相关算法回收,如分代
  • RAII 可以处理对象和其他资源,超出作用域销毁
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <memory>
#include <string>

using namespace std;
// 一个简单的类
class Person
{
public:
string name;

Person(string n) : name(n) {}
~Person()
{
cout << "Person " << name << " destroyed.\n";
}
void greet() const
{
cout << "Hello, my name is " << name << "!\n";
}
};

int main()
{
{
Person p1("Alice");
}
cout << "End of scope.\n";
Person *p2 = new Person("Bob");
delete p2;
return 0;
}
上一篇:
cmake基本命令
下一篇:
STL库算法