中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

網(wǎng)站服務器租用多少錢一年合適濟南網(wǎng)站設計

網(wǎng)站服務器租用多少錢一年合適,濟南網(wǎng)站設計,晉江網(wǎng)站建設qzdzi,全國文明城市創(chuàng)建工作純虛析構(gòu)的問題 多態(tài)使用時,如果子類中有屬性開辟到堆區(qū),那么父類指針在釋放時無法調(diào)用到子類的析構(gòu)代碼。 解決方式:將父類中的析構(gòu)函數(shù)改為虛析構(gòu)或者純虛析構(gòu) 虛析構(gòu)和純虛析構(gòu)共性: 可以解決父類指針釋放子類對象都需要有…

純虛析構(gòu)的問題

多態(tài)使用時,如果子類中有屬性開辟到堆區(qū),那么父類指針在釋放時無法調(diào)用到子類的析構(gòu)代碼。

解決方式:將父類中的析構(gòu)函數(shù)改為虛析構(gòu)或者純虛析構(gòu)

虛析構(gòu)和純虛析構(gòu)共性:

  • 可以解決父類指針釋放子類對象
  • 都需要有具體的函數(shù)實現(xiàn)

虛析構(gòu)和純虛析構(gòu)區(qū)別:

  • 如果是純虛析構(gòu),該類屬于抽象類,無法實例化對象

虛析構(gòu)語法:

virtual ~類名(){}

純虛析構(gòu)語法:

virtual ~類名() = 0;

類名::~類名(){}

示例:

class Animal {
public:Animal(){cout << "Animal 構(gòu)造函數(shù)調(diào)用!" << endl;}virtual void Speak() = 0;//析構(gòu)函數(shù)加上virtual關鍵字,變成虛析構(gòu)函數(shù)//virtual ~Animal()//{//	cout << "Animal虛析構(gòu)函數(shù)調(diào)用!" << endl;//}virtual ~Animal() = 0;
};Animal::~Animal()
{cout << "Animal 純虛析構(gòu)函數(shù)調(diào)用!" << endl;
}//和包含普通純虛函數(shù)的類一樣,包含了純虛析構(gòu)函數(shù)的類也是一個抽象類。不能夠被實例化。class Cat : public Animal {
public:Cat(string name){cout << "Cat構(gòu)造函數(shù)調(diào)用!" << endl;m_Name = new string(name);}virtual void Speak(){cout << *m_Name <<  "小貓在說話!" << endl;}~Cat(){cout << "Cat析構(gòu)函數(shù)調(diào)用!" << endl;if (this->m_Name != NULL) {delete m_Name;m_Name = NULL;}}public:string *m_Name;
};void test01()
{Animal *animal = new Cat("Tom");animal->Speak();//通過父類指針去釋放,會導致子類對象可能清理不干凈,造成內(nèi)存泄漏//怎么解決?給基類增加一個虛析構(gòu)函數(shù)//虛析構(gòu)函數(shù)就是用來解決通過父類指針釋放子類對象delete animal;
}int main() {test01();system("pause");return 0;
}

注意:即使是純虛析構(gòu)也需要有具體的實現(xiàn)。因為包含純虛函數(shù)的類為抽象類,被繼承后,在派生類析構(gòu)函數(shù)被調(diào)用時抽象類析構(gòu)函數(shù)也將被調(diào)用,因此必須有實現(xiàn)。唯一麻煩就是必須在類的定義之外(cpp文件)實現(xiàn)它。

總結(jié):

? 1. 虛析構(gòu)或純虛析構(gòu)就是用來解決通過父類指針釋放子類對象

? 2. 如果子類中沒有堆區(qū)數(shù)據(jù),可以不寫為虛析構(gòu)或純虛析構(gòu)

? 3. 擁有純虛析構(gòu)函數(shù)的類也屬于抽象類



純虛函數(shù)的實現(xiàn)案例:純虛析構(gòu)函數(shù)必須有實現(xiàn)

純虛函數(shù)可以有實現(xiàn):唯一麻煩就是必須在類的定義之外(cpp文件)實現(xiàn)它。
申明一個函數(shù)為純虛并不意味著它沒有實現(xiàn),它意味著:

  • 當前類是抽象類 ;
  • 任何從此類派生的實體類必須將此函數(shù)申明為一個“普通”的虛函數(shù)(也就是說,
    不能帶“= 0”)。

1、純虛函數(shù)例子:

聲明一個pure virtual 函數(shù)的目的是為了讓 derived classes 只繼承函數(shù)接口,派生類必須提供實現(xiàn)。
可以為pure virtual函數(shù)提供實現(xiàn),但使用時需要指明所屬類,如:

//.h
class A{
public:virtual void func1() = 0;
};
class B : public A{
public:virtual void func1(){A::func1();};
};//.cpp
void A::func1(){..........}B b;
b.A::func1(); // 與b.func1()結(jié)果相同,相當于提供了缺省實現(xiàn),但派生類需要主動指定。



2、純虛析構(gòu)函數(shù)必須有實現(xiàn):

因為包含純虛函數(shù)的類為抽象類,被繼承后,在派生類析構(gòu)函數(shù)被調(diào)用時抽象類析構(gòu)函數(shù)也將被調(diào)用,因此必須有實現(xiàn)

class A{
public:virtual ~A() = 0;
};//.cpp
A::~A(){...}

總結(jié):
1、純虛函數(shù)可以有實現(xiàn),但必須在類的定義之外(cpp文件)實現(xiàn)。
2、純虛析構(gòu)函數(shù)必須有實現(xiàn)。





參考鏈接:
純虛函數(shù)的實現(xiàn)案例:純虛析構(gòu)函數(shù)必須有實現(xiàn)

http://m.risenshineclean.com/news/63096.html

相關文章:

  • 仿站工具下載后咋做網(wǎng)站私域流量營銷
  • 厚街網(wǎng)站建設多少錢百度的seo關鍵詞優(yōu)化怎么弄
  • 石巖醫(yī)院網(wǎng)站建設免費的外貿(mào)網(wǎng)站推廣方法
  • 蘇州高新區(qū)建設局網(wǎng)站管網(wǎng)百度 搜索熱度
  • 濟南免費做網(wǎng)站合肥網(wǎng)站建設程序
  • 做網(wǎng)站如何兼職廣告seo是什么意思
  • 怎樣做學校網(wǎng)站網(wǎng)站建設公司好
  • 怎樣防止別人利用自己的電腦做網(wǎng)站服務器網(wǎng)站域名查詢網(wǎng)
  • 怎么用上線了做網(wǎng)站淘寶推廣怎么做
  • 關鍵字查詢我的網(wǎng)站怎么做鄭州網(wǎng)絡推廣服務
  • 寵物用品技術(shù)支持 東莞網(wǎng)站建設汨羅網(wǎng)站seo
  • wordpress 搜索提示河南整站關鍵詞排名優(yōu)化軟件
  • 互聯(lián)網(wǎng)網(wǎng)站制作公司蘇州百度推廣公司
  • 海洋網(wǎng)站建設性價比高石嘴山網(wǎng)站seo
  • 蘇州網(wǎng)站制作外貿(mào)營銷網(wǎng)站建站
  • 網(wǎng)站制作怎么學游戲交易平臺
  • 郴州網(wǎng)站建設公司在哪里西安關鍵詞網(wǎng)站排名
  • 網(wǎng)站robots.txt怎么寫可口可樂營銷策劃方案
  • 百度搜不到我的網(wǎng)站免費友情鏈接
  • 織夢怎么做網(wǎng)站北京網(wǎng)站優(yōu)化專家
  • 華為手機網(wǎng)站建設策劃方案論文班級優(yōu)化大師怎么用
  • 學習網(wǎng)站建設的網(wǎng)站品牌互動營銷案例
  • 云南凡科建站哪家好免費發(fā)布廣告的平臺
  • 中國建設銀行培訓網(wǎng)站商品營銷推廣的方法有哪些
  • 微信官方版官方網(wǎng)站江西省seo
  • 咸陽建設局網(wǎng)站私人做網(wǎng)站的流程
  • 古鎮(zhèn) 網(wǎng)站建設滄州網(wǎng)站優(yōu)化
  • 網(wǎng)上做分銷代銷哪個網(wǎng)站好競價排名的弊端
  • 網(wǎng)站群管理建設工作個人網(wǎng)站
  • 日本做暖暖視頻網(wǎng)站試看互聯(lián)網(wǎng)怎么打廣告推廣