举例在对象中创建一个动态的结构体并释放
时间: 2024-03-26 18:42:23 浏览: 78
JAVA c++比较 对比讲解二者不同 代码举例(英文版)
5星 · 资源好评率100%
在对象中创建一个动态的结构体,可以使用指针来实现。具体来说,我们可以在对象中定义一个指向结构体的指针变量,然后在对象的构造函数中使用`new`运算符动态分配结构体空间,并将其地址赋值给指针变量;在对象的析构函数中使用`delete`运算符释放结构体空间。
以下是一个示例代码:
```c++
#include <iostream>
struct MyStruct {
int x;
int y;
};
class MyClass {
public:
MyClass() {
struct_ptr_ = new MyStruct;
struct_ptr_->x = 1;
struct_ptr_->y = 2;
}
~MyClass() {
delete struct_ptr_;
struct_ptr_ = nullptr;
}
void print() const {
std::cout << "x: " << struct_ptr_->x << ", y: " << struct_ptr_->y << std::endl;
}
private:
MyStruct* struct_ptr_;
};
int main() {
MyClass obj;
obj.print();
return 0;
}
```
在上述代码中,我们定义了一个结构体`MyStruct`,其中包含两个整型成员变量`x`和`y`。然后我们定义了一个类`MyClass`,其中包含一个指向`MyStruct`的指针变量`struct_ptr_`。在`MyClass`的构造函数中,我们使用`new`运算符动态分配一个`MyStruct`类型的空间,并将其地址赋值给`struct_ptr_`;在析构函数中,我们使用`delete`运算符释放`MyStruct`类型的空间。最后,我们在`MyClass`中定义了一个打印函数`print()`,用于打印`MyStruct`的成员变量。
在`main()`函数中,我们创建了一个`MyClass`类型的对象`obj`,并调用其`print()`函数进行打印。在程序运行结束时,`MyClass`的析构函数会自动被调用,从而释放`MyStruct`类型的空间,避免了内存泄漏的问题。
阅读全文