c++ 自定义类的析构函数 new函数
时间: 2023-08-07 10:19:09 浏览: 169
在 C++ 中,可以使用 `new` 运算符动态地分配内存空间,同时调用类的构造函数来初始化这块内存。而在使用完这块内存后,需要手动释放它,否则会导致内存泄漏。这时就需要使用类的析构函数来释放这块内存。
下面是一个自定义类的示例代码,其中包含了构造函数、析构函数和 `new` 运算符的重载:
```cpp
class MyClass {
public:
// 构造函数
MyClass() {
// 初始化
}
// 析构函数
~MyClass() {
// 释放内存
}
// new 运算符重载
void* operator new(size_t size) {
void* p = malloc(size);
return p;
}
// delete 运算符重载
void operator delete(void* p) {
free(p);
}
private:
// 成员变量
};
```
在这个示例中,`operator new` 和 `operator delete` 运算符被重载,它们分别在对象创建和销毁时被调用。`operator new` 用于动态分配内存空间,并返回指向该内存的指针;`operator delete` 用于释放该内存。
在使用时,可以通过以下方式创建对象:
```cpp
MyClass* p = new MyClass();
```
这将调用 `operator new` 运算符动态分配内存空间和 `MyClass` 的构造函数来创建对象。
当不再需要这个对象时,可以通过以下方式释放该内存:
```cpp
delete p;
```
这将调用 `MyClass` 的析构函数和 `operator delete` 运算符来释放内存。
阅读全文