C++中对象的动态建立与释放详解及其作用介绍
目录
- 概述
- 对象的动态的建立和释放
- 案例
- 对象数组 vs 指针数组
- 对象数组
- 指针数组
概述 通过对象的动态建立和释放, 我们可以提高内存空间的利用率.

文章图片
对象的动态的建立和释放 new 运算符: 动态地分配内存
delete 运算符: 释放内存
当我们用
new
运算符动态地分配内存后, 将返回一个指向新对象的指针的值. 我们可以通过这个地址来访问对象. 例如:int main() {Time *pt1 = new Time(8, 8, 8); pt1 -> show_time(); delete pt1; // 释放对象return 0; }
输出结果:
8:8:8当我们不再需要由 new 建立的对象时, 用 delete 运算符释放.
案例 Box 类:
#ifndef PROJECT1_BOX_H#define PROJECT1_BOX_Hclass Box {public:// 成员对象double length; double width; double height; // 成员函数Box(); // 无参构造Box(double h, double w, double l); // 有参有参构造~Box(); // 析构函数double volume() const; // 常成员函数}; #endif //PROJECT1_BOX_H
Box.cpp:
#include#include "Box.h"using namespace std; Box::Box() : height(-1), width(-1), length(-1) {}Box::Box(double h, double w, double l) : height(h), width(w), length(l) {cout << "========调用构造函数========\n"; }double Box::volume() const{return (height * width * length); }Box::~Box() {cout << "========调用析构函数========\n"; }
main:
#include "Box.h"#includeusing namespace std; int main() {Box *pt = new Box(16, 12, 10); // 创建指针pt指向Box对象cout << "长:" << pt->length << "\t"; cout << "宽:" << pt->width << "\t"; cout << "高:" << pt->height << endl; cout << "体积:" << pt->volume() << endl; delete pt; // 释放空间return 0; }
输出结果:
========调用构造函数========
长:10 宽:12 高:16
体积:1920
========调用析构函数========
对象数组 vs 指针数组
对象数组
固定大小的数组:
const int N = 100; Time t[N];
动态数组:
const int n = 3; // 定义数组个数Time *pt = new Time[n]; // 定义指针指向数组delete []pt; // 释放空间

文章图片
指针数组
建立占用空间小的指针数组可以帮助我们灵活处理常用空间大的对象集合. (拿时间换空间)
举个栗子:
int main() {const int n = 3; Time *t[n] = {nullptr}; if (t[0] == nullptr){t[0] = new Time(8, 8, 8); }if (t[1] == nullptr){t[1] = new Time(6, 6, 6); }t[0] -> show_time(); t[1] -> show_time(); return 0; }

文章图片
到此这篇关于C++中对象的动态建立与释放详解及其作用介绍的文章就介绍到这了,更多相关C++对象的动态建立与释放内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募
- 2020-04-07vue中Axios的封装和API接口的管理