您好,登錄后才能下訂單哦!
本篇內容主要講解“C++中對象的動態建立與釋放講解以及對象數組與指針數組的區別”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“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_H class 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 <iostream> #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" #include <iostream> using 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
========調用析構函數========
固定大小的數組:
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++中對象的動態建立與釋放講解以及對象數組與指針數組的區別”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。