第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

對(duì)析構(gòu)函數(shù)的疑惑

疑問(wèn)1、有個(gè)問(wèn)題啊老師, 程序在執(zhí)行delete p;這個(gè)語(yǔ)句時(shí),為什么會(huì)根據(jù) p 指針找到相應(yīng)的子類對(duì)象的虛函數(shù)表指針?。?/p>

疑問(wèn)2、 還有一個(gè)問(wèn)題,就是-- 如果基類中沒(méi)有虛函數(shù),為什么使用 delete p; 還是不能調(diào)用指針P 對(duì)應(yīng)子類對(duì)象的析構(gòu)函數(shù)??!

針對(duì)疑問(wèn)2自己試驗(yàn)的代碼如下:

#include?<iostream>
using?namespace?std;

class?Shape
{
public:
Shape(){?cout?<<?"Shape()\n";}
~Shape()?{?cout?<<?"~Shape()\n";?}
int?x;
int?y;
};

class?Circle?:?public?Shape
{
public:
Circle(){?cout?<<?"Circle()\n";}
~Circle()?{?cout?<<?"~Circle()\n";}
};

int?main()
{
Shape?*p?=?new?Circle;
delete?p;
p?=?NULL;
return?0;
}

運(yùn)行結(jié)果如下:

http://img1.sycdn.imooc.com//56eba0c70001419604640150.jpg





此時(shí),還是沒(méi)有調(diào)用子類Circle 中的析構(gòu)函數(shù)。

這節(jié)課老師講的基類中都有虛函數(shù),而此時(shí)基類中沒(méi)有虛函數(shù),子類中的析構(gòu)函數(shù)還是不能調(diào)用。到這里就有困惑了,還望老師予以解答。。。謝謝您

正在回答

3 回答

你提的問(wèn)題在于,沒(méi)有虛函數(shù)時(shí),指針p指向Shape 類對(duì)象的指針變量,即使讓它指向了Circle,但實(shí)際上p指向的是Circle中從基類繼承的部分,通過(guò)指向基類對(duì)象的指針,只能訪問(wèn)派生類中的基類成員,而不能訪問(wèn)派生類增加的成員,所以只會(huì)執(zhí)行基類的析構(gòu)函數(shù)

0 回復(fù) 有任何疑惑可以回復(fù)我~

1、虛函數(shù)表不是只存儲(chǔ)虛函數(shù)的地址嗎? 怎莫理解您說(shuō)的 “類對(duì)象的頭部即虛函數(shù)表所在” 這句話。

虛函數(shù)表存放的是虛函數(shù)的地址,虛函數(shù)表指針存放的是虛函數(shù)表的首地址,在內(nèi)存中,子類對(duì)象Circle頭部(即前四個(gè)字節(jié)存放的是虛函數(shù)表指針,父類指針p指向子類Circle,也就是說(shuō)把子類Circle的首地址賦值給p,根據(jù)p就可以找到子類Circle的虛函數(shù)表指針,依次找到虛函數(shù)表,再找到虛函數(shù)。


2、沒(méi)有虛函數(shù),就沒(méi)有虛函數(shù)表,子類對(duì)象Circle頭部(即前四個(gè)字節(jié))就沒(méi)有虛函數(shù)表指針,就沒(méi)法調(diào)用子類對(duì)象Circle的析構(gòu)函數(shù)

1 回復(fù) 有任何疑惑可以回復(fù)我~

1、虛函數(shù)表位于每個(gè)含虛函數(shù)對(duì)象存儲(chǔ)位置的頭部即對(duì)象指針p指向的位置,雖然p是父類類型的指針,但是賦值時(shí)指向的是子類對(duì)象,也就是子類對(duì)象的頭部即虛函數(shù)表所在

2、這個(gè)現(xiàn)象的出現(xiàn)就是我們要用虛析構(gòu)函數(shù)的原因(不知道如何說(shuō)明==)

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

Popper0912 提問(wèn)者

虛函數(shù)表不是只存儲(chǔ)虛函數(shù)的地址嗎? 怎莫理解您說(shuō)的 “類對(duì)象的頭部即虛函數(shù)表所在” 這句話。
2016-03-18 回復(fù) 有任何疑惑可以回復(fù)我~
#2

丿琴丶?xì)?/a> 回復(fù) Popper0912 提問(wèn)者

首地址?
2016-08-28 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
C++遠(yuǎn)征之多態(tài)篇
  • 參與學(xué)習(xí)       66223    人
  • 解答問(wèn)題       334    個(gè)

本教程將帶領(lǐng)大家體會(huì)面向?qū)ο笕筇匦灾械亩鄳B(tài)特性

進(jìn)入課程

對(duì)析構(gòu)函數(shù)的疑惑

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)