C++物件模型

來源:互聯網
上載者:User

標籤:

何為C++物件模型? 

C++物件模型可以概括為以下2部分:

  1. 1       語言中直接支援物件導向程式設計的部分
  2. 2       對於各種支援的底層實現機制

語言中直接支援物件導向程式設計的部分,如建構函式解構函式虛函數繼承(單繼承、多繼承、虛繼承)、多態等等,這也是組裡其他同學之前分享過的內容。第一部分這裡我簡單過一下,重點在底層實現機制。

在c語言中,“資料”和“處理資料的操作(函數)”是分開來聲明的,也就是說,語言本身並沒有支援“資料和函數”之間的關聯性。在c++中,通過抽象資料類型(abstract data type,ADT),在類中定義資料和函數,來實現資料和函數直接的綁定。

概括來說,C++類中有兩種成員資料:static、nonstatic;三種成員函數:static、nonstatic、virtual

 

如下面的Base類定義:

#pragma once#include<iostream>using namespace std;class Base{public:    Base(int);    virtual ~Base(void);     int getIBase() const;    static int instanceCount();    virtual void print() const; protected:     int iBase;    static int count;};

  Base類在機器中我們如何構建出各種成員資料和成員函數的呢?

基本C++物件模型 

在介紹C++使用的物件模型之前,介紹2種物件模型:簡單物件模型(a simple object model)、表格驅動物件模型(a table-driven object model)。

 

簡單物件模型(a simple object model)

 

所有的成員佔用相同的空間(跟成員類型無關),對象只是維護了一個包含成員指標的一個表。表中放的是成員的地址,無論上成員變數還是函數,都是這樣處理。對象並沒有直接儲存成員而是儲存了成員的指標。

 http://www.cnblogs.com/skynet/p/3343726.html

C++物件模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.