最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++內(nèi)存對(duì)象布局小測(cè)試

 更新時(shí)間:2023年12月08日 08:36:46   作者:柏下微雨  
這篇文章主要介紹了C++內(nèi)存對(duì)象布局小測(cè)試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

對(duì)象布局

如圖:

布局測(cè)試

如果不了解的讀者可以自行學(xué)習(xí),在此我對(duì)對(duì)象布局做一些測(cè)試,代碼如下:

class Point2D {
public:
    Point2D(int x, int y) :x(x), y(y) {}
    Point2D(const Point2D& p) {
        cout << "copy2d" << endl;
        x = p.x, y = p.y;
    }
    virtual void print() const{
        cout << x << " " << y << endl;
    }
    virtual ~Point2D() {}
protected:
    int x;
    int y;
};
class Point3D : public Point2D {
public:
    Point3D(int x, int y, int z) :Point2D(x, y), z(z) {}
    virtual void print()const {
        cout << x << " " << y << " " << z << endl;
    }
private:
    int z;
};
int main() {
    Point2D* p2d = new Point3D(1, 2, 3);
    Point2D p2d2 = Point3D(1,2,3);//輸出copy2d
    p2d->print();//1)輸出為1,2,3
    p2d2.print();//2)輸出為1,2
    Point2D p2d1 = *p2d;//輸出copy2d
    p2d1.print();//3)輸出為1,2
    (*p2d).print();//4)輸出為1,2,3
    Point3D* p3d = p2d;//Point2D*類型的值不能用于初始化Point3D*類型的實(shí)體
}

分析

首先我們需要知道,為什么只有指針和引用可以實(shí)現(xiàn)多態(tài),而普通的對(duì)象聲明不可以。因?yàn)橹羔樅鸵貌⒉恢付ㄋ笇?duì)象的大?。ㄖ羔槺旧碇徽?個(gè)字節(jié)),當(dāng)把子類指針賦值給父類指針時(shí)(如main函數(shù)里第一句語(yǔ)句),不會(huì)報(bào)錯(cuò),并且由于虛函數(shù)表的存在,父類指針成功間接訪問(wèn)到了子類定義的虛函數(shù)。

而將子類對(duì)象賦值給父類對(duì)象時(shí)(如main函數(shù)里第二句語(yǔ)句),實(shí)際上是調(diào)用了一個(gè)拷貝構(gòu)造函數(shù),并將子類轉(zhuǎn)型為父類對(duì)象傳進(jìn)拷貝構(gòu)造函數(shù))自然無(wú)法產(chǎn)生多態(tài)。

再看3)的輸出,其實(shí)和2)同理,調(diào)用拷貝構(gòu)造函數(shù)

4)的輸出自然也沒(méi)有問(wèn)題,取得同一個(gè)地址空間的虛函數(shù)。

參考:https://www.bilibili.com/video/BV1v64y1q7JT/?p=1&spm_id_from=...,《深度探索C++對(duì)象模型》

以上就是C++內(nèi)存對(duì)象布局小測(cè)試的詳細(xì)內(nèi)容,更多關(guān)于C++內(nèi)存對(duì)象布局的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一篇文章帶你了解C++多態(tài)的實(shí)現(xiàn)原理

    一篇文章帶你了解C++多態(tài)的實(shí)現(xiàn)原理

    這篇文章主要介紹了C++多態(tài)的實(shí)現(xiàn)機(jī)制理解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下,希望能給你帶來(lái)幫助
    2021-08-08
  • c++中虛函數(shù)和純虛函數(shù)的作用與區(qū)別

    c++中虛函數(shù)和純虛函數(shù)的作用與區(qū)別

    這篇文章主要介紹了c++中虛函數(shù)和純虛函數(shù)的作用與區(qū)別,需要的朋友可以參考下
    2014-07-07
  • C++實(shí)現(xiàn)LeetCode(115.不同的子序列)

    C++實(shí)現(xiàn)LeetCode(115.不同的子序列)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(115.不同的子序列),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++項(xiàng)目開(kāi)發(fā)實(shí)現(xiàn)圖書管理系統(tǒng)

    C++項(xiàng)目開(kāi)發(fā)實(shí)現(xiàn)圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++項(xiàng)目開(kāi)發(fā)實(shí)現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++中的幾種排序算法

    C++中的幾種排序算法

    這篇文章主要介紹了C++中的幾種排序算法,需要的朋友可以參考下
    2014-02-02
  • C++ Boost MetaStateMachine定義狀態(tài)機(jī)超詳細(xì)講解

    C++ Boost MetaStateMachine定義狀態(tài)機(jī)超詳細(xì)講解

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-12-12
  • C語(yǔ)言結(jié)合ffmpeg打印音視頻信息

    C語(yǔ)言結(jié)合ffmpeg打印音視頻信息

    這篇文章主要介紹了如何通過(guò)C語(yǔ)言或者C++編程語(yǔ)言結(jié)合ffmpeg拿到一些音視頻的關(guān)鍵信息,例如:幀率等。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12
  • C++中Boost庫(kù)安裝使用指南(VS2022?+?vcpkg)

    C++中Boost庫(kù)安裝使用指南(VS2022?+?vcpkg)

    本文主要介紹了C++中Boost庫(kù)安裝使用指南(VS2022?+?vcpkg),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-06-06
  • C++使用CRT庫(kù)檢測(cè)內(nèi)存泄漏的方法詳解

    C++使用CRT庫(kù)檢測(cè)內(nèi)存泄漏的方法詳解

    內(nèi)存泄漏是 C/C++ 應(yīng)用程序中最微妙、最難以發(fā)現(xiàn)的 bug,存泄漏是由于之前分配的內(nèi)存未能正確解除分配而導(dǎo)致的, 內(nèi)存泄漏的檢測(cè)工具有很多,CRT庫(kù),是Visual Studio 自帶的,所以我們可以開(kāi)箱即用,所以下面我們就來(lái)一起學(xué)習(xí)一下如何使用CRT庫(kù)檢測(cè)內(nèi)存泄漏
    2024-06-06
  • C++實(shí)現(xiàn)AVL樹的基本操作指南

    C++實(shí)現(xiàn)AVL樹的基本操作指南

    AVL樹是高度平衡的而二叉樹,它的特點(diǎn)是AVL樹中任何節(jié)點(diǎn)的兩個(gè)子樹的高度最大差別為1,下面這篇文章主要給大家介紹了關(guān)于C++實(shí)現(xiàn)AVL樹的相關(guān)資料,需要的朋友可以參考下
    2022-01-01

最新評(píng)論

阿荣旗| 勃利县| 麻城市| 罗城| 永清县| 依兰县| 平南县| 弥勒县| 准格尔旗| 阳高县| 墨竹工卡县| 新邵县| 河池市| 昌吉市| 如东县| 洛阳市| 额济纳旗| 沁阳市| 绵阳市| 浪卡子县| 尖扎县| 高安市| 绥化市| 南涧| 威海市| 额济纳旗| 安丘市| 南平市| 陇川县| 江津市| 克拉玛依市| 华安县| 宜昌市| 桓仁| 乐至县| 荔波县| 大姚县| 平定县| 昌乐县| 木里| 长子县|