c++ 虛函數:內存分析

我們先看這段代碼

#include<iostream>
using namespace std;
class A {
public:
	void f() { cout << "f" << endl; };
	virtual void f1() { cout << "f1" << endl; };
	
};
int main()
{
	A* a = nullptr;
	a->f();
	a->f1();
	return 0;
}

結果:a可以調用f,但是不能調用;

分析:虛函數是動態綁定的,調用其實就是nullptr::a,所以會報錯,非虛函數是靜態綁定的,則相當於A::a。

含有虛函數的類中會有一個虛函數指針,本身佔用一定空間,虛函數指針是通過查找虛函數表確定調用函數的,如果同時new多個對象,虛函數表可以共用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章