91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

清徐县| 安塞县| 蒙自县| 南雄市| 青海省| 观塘区| 柞水县| 浏阳市| 顺义区| 横峰县| 霍林郭勒市| 旌德县| 英德市| 墨江| 卢湾区| 仁寿县| 灵寿县| 上虞市| 宁夏| 滨州市| 濮阳市| 龙川县| 彭山县| 乐昌市| 楚雄市| 安化县| 天柱县| 濉溪县| 孙吴县| 富平县| 昭通市| 鹿邑县| 皮山县| 桑植县| 霸州市| 焦作市| 东光县| 铜鼓县| 错那县| 湖州市| 方城县|