亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 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

尉氏县| 陈巴尔虎旗| 汝州市| 台东市| 正定县| 定边县| 永平县| 永新县| 灵石县| 乌兰县| 老河口市| 阳城县| 勐海县| 莲花县| 尚义县| 吉安县| 会宁县| 嘉禾县| 衡水市| 招远市| 大悟县| 威信县| 洛隆县| 麻栗坡县| 若羌县| 武鸣县| 光山县| 崇阳县| 新安县| 郸城县| 安多县| 阳西县| 格尔木市| 多伦县| 昭通市| 岫岩| 新闻| 伊吾县| 郑州市| 镇沅| 铜梁县|