c++ 虚函数:内存分析

我们先看这段代码

#include
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多个对象,虚函数表可以共用。

你可能感兴趣的:(C++合集)