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

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

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

因為虛擬函數(shù)的地址翻譯取決于對象的內存地址,而不取決于數(shù)據(jù)類型(編譯器對函數(shù)

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

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

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

有如下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;
}

程序運行結果為:

1

2

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

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

語句pMem = &b;使pMem指向對象b的內存空間,調用pMem->funOver()時,

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

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

相關文章

  • C++驅動bash的實現(xiàn)代碼

    C++驅動bash的實現(xiàn)代碼

    這篇文章主要介紹了C++驅動bash的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • C語言實現(xiàn)簡易連連看游戲

    C語言實現(xiàn)簡易連連看游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易連連看游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++設計模式編程中proxy代理模式的使用實例

    C++設計模式編程中proxy代理模式的使用實例

    這篇文章主要介紹了C++設計模式編程中proxy代理模式的使用實例解析,代理模式可以被歸類為結構型的設計模式,代理模式主張為對象提供一種代理以控制對這個對象的訪問,需要的朋友可以參考下
    2016-03-03
  • C語言 深入講解條件編譯的用處

    C語言 深入講解條件編譯的用處

    C語言提供了條件編譯的語法,就是在編譯源碼的時候,可以選擇性地編譯指定的代碼。例如我們開發(fā)一個兼容windows系統(tǒng)和linux系統(tǒng)運行的項目,那么,一些與操作系統(tǒng)密切相關的代碼,就需要進行選擇性編譯
    2022-04-04
  • 字符串拷貝函數(shù)memcpy和strncpy以及snprintf 的性能比較

    字符串拷貝函數(shù)memcpy和strncpy以及snprintf 的性能比較

    以下是對字符串拷貝函數(shù)memcpy和strncpy以及snprintf它們之間的性能進行了比較,需要的朋友可以過來參考下
    2013-07-07
  • c語言實現(xiàn)把文件中數(shù)據(jù)讀取并存到數(shù)組中

    c語言實現(xiàn)把文件中數(shù)據(jù)讀取并存到數(shù)組中

    下面小編就為大家?guī)硪黄猚語言實現(xiàn)把文件中數(shù)據(jù)讀取并存到數(shù)組中。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C語言版的三子棋游戲

    C語言版的三子棋游戲

    這篇文章主要為大家詳細介紹了C語言版的三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 一篇文章帶你了解C++面向對象編程--繼承

    一篇文章帶你了解C++面向對象編程--繼承

    這篇文章主要介紹了解析C++面對象編程--繼承的運用,是C++入門學習中的基礎知識,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-08-08
  • C++ OpenCV實戰(zhàn)之手勢識別

    C++ OpenCV實戰(zhàn)之手勢識別

    這篇文章主要介紹了如何利用C++?OpenCV實現(xiàn)手勢識別,文中的示例代碼講解詳細,對我們學習OpenCV有一定幫助,感興趣的小伙伴可以了解一下
    2022-04-04
  • C++中用指向數(shù)組的指針作函數(shù)參數(shù)

    C++中用指向數(shù)組的指針作函數(shù)參數(shù)

    多維數(shù)組名作為函數(shù)參數(shù)傳遞:在二維數(shù)組中,數(shù)組名a是指向首行a[0]的指針,也就是說a=&a[0]; a[0]是指向首元素a[0][0]的指針,也就是說a[0]=&a[0][0]
    2013-10-10

最新評論

新安县| 青海省| 女性| 鄢陵县| 木兰县| 慈利县| 通海县| 麻栗坡县| 九江市| 科尔| 额济纳旗| 永城市| 元江| 常德市| 舟山市| 建宁县| 德惠市| 庆城县| 沽源县| 阿勒泰市| 卢湾区| 建平县| 山东| 荥经县| 抚远县| 区。| 清镇市| 南丰县| 休宁县| 江油市| 闵行区| 黄骅市| 浦北县| 榆树市| 淅川县| 合阳县| 静乐县| 龙口市| 揭阳市| 金华市| 于都县|