您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“C++中對象的動態(tài)建立與釋放講解以及對象數(shù)組與指針數(shù)組的區(qū)別”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“C++中對象的動態(tài)建立與釋放講解以及對象數(shù)組與指針數(shù)組的區(qū)別”吧!
概述
對象的動態(tài)的建立和釋放
案例
對象數(shù)組 vs 指針數(shù)組
對象數(shù)組
指針數(shù)組
通過對象的動態(tài)建立和釋放, 我們可以提高內(nèi)存空間的利用率.
new 運(yùn)算符: 動態(tài)地分配內(nèi)存
delete 運(yùn)算符: 釋放內(nèi)存
當(dāng)我們用new
運(yùn)算符動態(tài)地分配內(nèi)存后, 將返回一個(gè)指向新對象的指針的值. 我們可以通過這個(gè)地址來訪問對象. 例如:
int main() { Time *pt1 = new Time(8, 8, 8); pt1 -> show_time(); delete pt1; // 釋放對象 return 0; }
輸出結(jié)果:
8:8:8
當(dāng)我們不再需要由 new 建立的對象時(shí), 用 delete 運(yùn)算符釋放.
Box 類:
#ifndef PROJECT1_BOX_H #define PROJECT1_BOX_H class Box { public: // 成員對象 double length; double width; double height; // 成員函數(shù) Box(); // 無參構(gòu)造 Box(double h, double w, double l); // 有參有參構(gòu)造 ~Box(); // 析構(gòu)函數(shù) double volume() const; // 常成員函數(shù) }; #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 << "========調(diào)用構(gòu)造函數(shù)========\n"; } double Box::volume() const{ return (height * width * length); } Box::~Box() { cout << "========調(diào)用析構(gòu)函數(shù)========\n"; }
main:
#include "Box.h" #include <iostream> using namespace std; int main() { Box *pt = new Box(16, 12, 10); // 創(chuàng)建指針pt指向Box對象 cout << "長:" << pt->length << "\t"; cout << "寬:" << pt->width << "\t"; cout << "高:" << pt->height << endl; cout << "體積:" << pt->volume() << endl; delete pt; // 釋放空間 return 0; }
輸出結(jié)果:
========調(diào)用構(gòu)造函數(shù)========
長:10 寬:12 高:16
體積:1920
========調(diào)用析構(gòu)函數(shù)========
固定大小的數(shù)組:
const int N = 100; Time t[N];
動態(tài)數(shù)組:
const int n = 3; // 定義數(shù)組個(gè)數(shù) Time *pt = new Time[n]; // 定義指針指向數(shù)組 delete []pt; // 釋放空間
建立占用空間小的指針數(shù)組可以幫助我們靈活處理常用空間大的對象集合. (拿時(shí)間換空間)
舉個(gè)栗子:
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++中對象的動態(tài)建立與釋放講解以及對象數(shù)組與指針數(shù)組的區(qū)別”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。