欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡述C++中虛擬函數(shù)的內(nèi)存分配機(jī)制

 更新時間:2020年08月14日 11:56:06   作者:ccf19881030  
這篇文章主要介紹了簡述C++中虛擬函數(shù)的內(nèi)存分配機(jī)制,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下

因?yàn)樘摂M函數(shù)的地址翻譯取決于對象的內(nèi)存地址,而不取決于數(shù)據(jù)類型(編譯器對函數(shù)

調(diào)用的合法性檢查取決于數(shù)據(jù)類型)。原來,如果類中定義了虛擬函數(shù),該類及其派生類

就要生成一張?zhí)摵瘮?shù)表,即vtable。而在類的對象地址空間中存儲一個該虛函數(shù)表的入口,

占4個字節(jié),這個入口地址是在構(gòu)造對象是由編譯器寫入的。

有如下C++程序:

//#include<stdio.h>

#include<iostream>
using namespace std;

class CMem	
{
	
public:
 CMem(){}
public:
 int m_first;
private:
 unsigned char m_second;
 
public :
 void fun1();
 virtual int funOver(){return 1;}
 
};



class CMemSub : public CMem
{

public:
 CMemSub(){}

public:
 int m_three;

private:
 int m_four;
 
public:
 void fun3();
 virtual int funOver(){return 2;}

virtual int fun4(){return 3;}


};


int main()
{ 
 CMem a,*pMem;
 CMemSub b;
  pMem = &a;
 printf("%d/n",pMem->funOver());
 
  pMem = &b;
  printf("%d/n",pMem->funOver());

 
	
	return 0;
}

程序運(yùn)行結(jié)果為:

1

2

這里涉及到虛函數(shù)的工作機(jī)制,由于對象的內(nèi)存空間中包含了虛函數(shù)表的入口,

編譯器能夠由這個入口找到適當(dāng)?shù)奶摵瘮?shù),這個函數(shù)的地址不再由數(shù)據(jù)類型決定了。

語句pMem = &b;使pMem指向?qū)ο骲的內(nèi)存空間,調(diào)用pMem->funOver()時,

編譯器得到了對象b的vtable入口,并由這個入口找到了CMemSub::funOver()虛函數(shù)地址。到此,虛函數(shù)的秘密終于大白于天下了。虛函數(shù)是C++語法的重點(diǎn)和難點(diǎn)。

以上就是簡述C++中虛擬函數(shù)的內(nèi)存分配機(jī)制的詳細(xì)內(nèi)容,更多關(guān)于c++虛擬函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • c++ *運(yùn)算符重載

    c++ *運(yùn)算符重載

    運(yùn)算符重載重載運(yùn)算符是C++ 的一個重要特性,使用運(yùn)算符重載, 的一個重要特性,使用運(yùn)算符重載, 重載運(yùn)算符是程序員可以把C++ 運(yùn)算符的定義擴(kuò)展到運(yùn)算分量是對象
    2014-09-09
  • C++ 超詳細(xì)深入分析單例模式

    C++ 超詳細(xì)深入分析單例模式

    單例模式(Singleton Pattern)是最簡單的設(shè)計模式之一。這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式,這種模式涉及到一個單一的類,該類負(fù)責(zé)創(chuàng)建自己的對象,同時確保只有單個對象被創(chuàng)建
    2022-03-03
  • VS2019實(shí)現(xiàn)C++的第一個MFC程序

    VS2019實(shí)現(xiàn)C++的第一個MFC程序

    本文主要介紹了VS2019實(shí)現(xiàn)C++的第一個MFC程序,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • C++圖書管理系統(tǒng)程序源代碼

    C++圖書管理系統(tǒng)程序源代碼

    這篇文章主要為大家詳細(xì)介紹了C++圖書管理系統(tǒng)程序源代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言實(shí)現(xiàn)小學(xué)生計算機(jī)輔助教學(xué)系統(tǒng)

    C語言實(shí)現(xiàn)小學(xué)生計算機(jī)輔助教學(xué)系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)小學(xué)生計算機(jī)輔助教學(xué)系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • C語言泛型選擇編程示例詳解

    C語言泛型選擇編程示例詳解

    這篇文章主要介紹了C語言泛型選擇編程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • C++實(shí)現(xiàn)聊天程序

    C++實(shí)現(xiàn)聊天程序

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)類似QQ聊天程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++中的異或運(yùn)算符^的使用方法

    C++中的異或運(yùn)算符^的使用方法

    本篇文章對C++中的異或運(yùn)算符^的使用方法進(jìn)行的詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++ sort排序函數(shù)用法詳解

    C++ sort排序函數(shù)用法詳解

    本文主要介紹了C++ sort排序函數(shù)用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • linux下基于C語言的信號編程實(shí)例

    linux下基于C語言的信號編程實(shí)例

    這篇文章主要介紹了linux下基于C語言的信號編程,實(shí)例分析了信號量的基本使用技巧與相關(guān)概念,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論