国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++ virtual destructor虛擬析構函數

C++ virtual destructor虛擬析構函數

2021-11-09 13:26我是小白呀 C/C++

C++中基類采用virtual虛析構函數是為了防止內存泄漏。具體地說,如果派生類中申請了內存空間,并在其析構函數中對這些內存空間進行釋放,今天通過本文給大家介紹C++ virtual destructor虛擬析構函數的相關知識,感興趣的朋友一起看

概述

虛析構函數 (virtual destructor) 可以幫我們實現基類指針刪除派生類對象.

C++ virtual destructor虛擬析構函數

問題

當我們從派生類的對象從內存中撤銷時會先調用派生的析構函數, 然后再基類的析構函數, 由此就會產生問題:

  • 如果用 new 運算符建立了派生類對象, 并且由一個基類的指針比那里指向該對象
  • 用 delete 運算符撤銷對象時, 系統只執行基類的析構函數. 而不執行派生類的析構函數, 派生類對象析構中要求的工作將被忽略

Base 類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef PROJECT6_BASE_H
#define PROJECT6_BASE_H
 
#include <iostream>
using namespace std;
 
class Base {
public:
    Base() {
        cout << "執行基類構造函數" << endl;
    };
    ~Base() {
        cout << "執行基類析構函數" << endl;
    };
};
 
#endif //PROJECT6_BASE_H

Derived 類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef PROJECT6_DERIVED_H
#define PROJECT6_DERIVED_H
 
#include <iostream>
#include "Base.h"
using namespace std;
 
class Derived : public Base {
public:
    Derived() {
        cout << "執行派生類構造函數" << endl;
    };
    ~Derived() {
        cout << "執行派生類析構函數" << endl;
    }
};
 
#endif //PROJECT6_DERIVED_H

main:

?
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include "Derived.h"
using namespace std;
 
int main() {
 
    Base *pt =new Derived;
    delete pt;
 
    return 0;
}

輸出結果:

執行基類構造函數
執行派生類構造函數
執行基類析構函數

虛析構函數

當基類的析構函數為虛函數時, 無論指針指的是同一族中的哪一個類對象, 系統會采用動態關聯, 掉啊用相應的析構函數, 對該對象進行清理工作. 即先調用了派生類的析構函數, 再調用了基類的析構函數.

Base 類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef PROJECT6_BASE_H
#define PROJECT6_BASE_H
 
#include <iostream>
using namespace std;
 
class Base {
public:
    Base() {
        cout << "執行基類構造函數" << endl;
    };
    virtual ~Base() {
        cout << "執行基類析構函數" << endl;
    };
};
 
#endif //PROJECT6_BASE_H

Derived 類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef PROJECT6_DERIVED_H
#define PROJECT6_DERIVED_H
 
#include <iostream>
#include "Base.h"
using namespace std;
 
class Derived : public Base {
public:
    Derived() {
        cout << "執行派生類構造函數" << endl;
    };
    ~Derived() {
        cout << "執行派生類析構函數" << endl;
    }
};
 
#endif //PROJECT6_DERIVED_H

main:

?
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include "Derived.h"
using namespace std;
 
int main() {
 
    Base *pt =new Derived;
    delete pt;
 
    return 0;
}

輸出結果:

執行基類構造函數
執行派生類構造函數
執行派生類析構函數
執行基類析構函數

總結

如果將基類的析構函數聲明為虛函數時, 由該基類所派生的所有派生類的析構函數也都自動成為虛函數. 即使派生類的析構函數與其基類的構造函數名字不相同.

最好把基類的析構函數聲明為虛函數. 即使基類并不需要析構函數, 我們也可以定義一個函數體為空的虛析構函數, 以保證撤銷動態分配空間能正確的處理.

注: 構造函數不能聲明為虛函數.

以上就是C++ virtual destructor虛擬析構函數的詳細內容,更多關于C++虛擬析構函數的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/weixin_46274168/article/details/116827263

延伸 · 閱讀

精彩推薦
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
主站蜘蛛池模板: 成人av电影在线 | 成人一区二区在线 | 欧美激情综合五月色丁香小说 | 成人自拍视频 | 亚洲综合在线视频 | 玖玖精品在线 | 中文字幕日韩在线视频 | 中文字幕av在线播放 | 特黄特黄aaaa级毛片免费看 | 亚洲第一福利视频 | 精品在线一区二区 | 久久亚洲一区二区 | 精品伊人久久 | 北条麻妃99精品青青久久 | 黄色毛片视频网站 | 黄色片地址 | 羞羞视频在线免费 | 欧美黄色性视频 | 久久国产精品视频 | 伊人中文字幕 | 国产成人精品视频 | 国产午夜视频 | 一区二区三区在线免费播放 | 黄色美女免费 | 人人澡人人射 | 国产一区二区三区在线观看视频 | 日韩国产精品一区二区三区 | av中文字幕在线播放 | 日本一区二区三区四区 | 日韩中文字幕在线 | 中文字幕一区二区三区乱码在线 | 国产一级在线观看 | 伊人激情综合网 | 少妇精品久久久久久久久久 | 91麻豆精品国产91久久久资源速度 | 99热这里有精品 | 久久午夜精品 | 毛片在线免费 | 性色视频在线 | 国产麻豆一区二区三区 | 国产色|