中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • C++中對象的動態建立與釋放講解以及對象數組與指針數組的區別

C++中對象的動態建立與釋放講解以及對象數組與指針數組的區別

發布時間:2021-09-07 13:54:20 來源:億速云 閱讀:159 作者:chen 欄目:開發技術

本篇內容主要講解“C++中對象的動態建立與釋放講解以及對象數組與指針數組的區別”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C++中對象的動態建立與釋放講解以及對象數組與指針數組的區別”吧!

目錄
  • 概述

  • 對象的動態的建立和釋放

  • 案例

  • 對象數組 vs 指針數組

    • 對象數組

    • 指針數組

概述

通過對象的動態建立和釋放, 我們可以提高內存空間的利用率.

C++中對象的動態建立與釋放講解以及對象數組與指針數組的區別

對象的動態的建立和釋放

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
========調用析構函數========

對象數組 vs 指針數組

對象數組

固定大小的數組:

const int N = 100;
Time t[N];

動態數組:

const int n = 3;  // 定義數組個數
Time *pt = new Time[n];  // 定義指針指向數組
delete []pt;  // 釋放空間

C++中對象的動態建立與釋放講解以及對象數組與指針數組的區別

指針數組

建立占用空間小的指針數組可以幫助我們靈活處理常用空間大的對象集合. (拿時間換空間)

舉個栗子:

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++中對象的動態建立與釋放講解以及對象數組與指針數組的區別”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

中阳县| 武邑县| 谷城县| 宕昌县| 蒙阴县| 西乌| 新巴尔虎左旗| 五家渠市| 富蕴县| 蒲城县| 睢宁县| 玉田县| 崇礼县| 凤凰县| 关岭| 建瓯市| 文山县| 尚志市| 鱼台县| 江阴市| 河源市| 老河口市| 青河县| 久治县| 南投市| 白朗县| 庆城县| 环江| 铜梁县| 涟源市| 蒙阴县| 龙游县| 三河市| 临潭县| 三门县| 杂多县| 渝中区| 平昌县| 乌拉特前旗| 平湖市| 喀什市|