cpp虛函式全解與實測

2021-10-09 14:41:01 字數 1580 閱讀 9917

前言…

說來許久沒更新部落格,但小張並沒有荒廢,意志也沒有消退。

此刻正被老闆派到河北某村兒出差,手裡還沒有心儀的offer,實慘。

言歸正傳,直接給出用於測試cpp虛函式的純虛函式虛函式動態多型建構函式析構函式的**,各位看官應該一看便知其中的奧妙:

// 虛函式動態多型

// created by wbzhang on 2020/9/19.

//#include

#include

using namespace std;

struct point2i

;// 基類 shape

class shape

void

setwidth

(int w)

void

setheight

(int h)

virtual void

print()

// 建構函式

shape()

:width(0

),height(0

)// 父類析構函式申明為虛函式

virtual ~

shape()

};// 介面類,僅包含純虛函式,並且不包含其他任何成員與方法

// 無法進行例項化

class paintmethod

;// 基類 paintcost,抽象類;無法進行例項化

class paintcost

// 宣告乙個純虛函式

virtual void

getcube()

=0;}

;// 還有一種所有方法均public給外界呼叫的叫啥...給忘了,整合類??

// 派生類

class rectangle: public shape, public paintcost

void

print()

// 繼承了抽象類的純虛函式,則必須將所有純虛函式均實現才可以例項化

void

getcube()

// 子類建構函式

rectangle()

// 子類析構函式

~rectangle()

};intmain

(void

)/* 總結:

* 1) 虛函式原理:虛表指標與虛函式表

* 2) 建構函式:先基類,再派生類的成員,再呼叫派生類建構函式

* 3) 析構函式:先呼叫子類析構函式,再呼叫父類析構函式

* 4) 純虛函式-->介面類,抽象類

* */

測試結果如下:

虛函式原理:虛表指標與虛函式表

建構函式:先基類,再派生類的成員,再呼叫派生類建構函式

析構函式:先呼叫子類析構函式,再呼叫父類析構函式

純虛函式–>介面類,抽象類

Cpp 虛函式的存在

定義 在某 基類中宣告為 virtual 並在乙個或多個 派生類中被重新定 義的 成員函式。用法格式 virtual 函式返回型別 函式名 參數列 作用 它是實現多型性 通過指向派生類的基類 指標或引用,訪問派生類中同名覆蓋成員函式的基礎。include include using namespac...

Cpp虛函式提高 虛函式指標,虛函式表,物件模型)

1.虛函式實現過程 普通的成員函式以及呼叫 include using namespace std class a 執行結果b,b,b 2.虛函式特點 普通成員函式呼叫跟著類方法走,虛函式跟著物件方法走。為什麼?我們下面輸出類b的大小來看sizeof b 8 原因是宣告虛函式的物件中,存放著虛函式指...

C 虛函式(全)

為了實現c 的多型,c 使用了一種動態繫結的技術。這個技術的核心是虛函式表 下文簡稱虛表 本文介紹虛函式表是如何實現動態繫結的。每個包含了虛函式的類都包含乙個虛表。我們知道,當乙個類 a 繼承另乙個類 b 時,類a會繼承類b的函式的呼叫權。所以如果乙個基類包含了虛函式,那麼其繼承類也可呼叫這些虛函式...