19.理解虚基类虚继承
Posted 为了财务自由!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了19.理解虚基类虚继承相关的知识,希望对你有一定的参考价值。
抽象类:有纯虚函数的类
virtual:
修饰成员方法是虚函数
可以修饰继承方式,是虚继承。被虚继承的类,叫做虚基类!
如果不是虚继承,那么内存分配:
A::ma
mb
如果虚继承的话:
vbptr
mb
A::ma
0:向上的偏移量!
8:到虚基类数据的偏移量!
class A
public:
virtual void func() cout << "call A::func" << endl;
void operator delete(void *ptr)
cout << "operator delete p:" << ptr << endl;
free(ptr);
private:
int ma;
;
class B : virtual public A
public:
void func() cout << "call B::func" << endl;
void* operator new(size_t size)
void *p = malloc(size);
cout << "operator new p:" << p << endl;
return p;
private:
int mb;
;
以上是关于19.理解虚基类虚继承的主要内容,如果未能解决你的问题,请参考以下文章
C++中的各种“虚“-- 虚函数纯虚函数虚继承虚基类虚析构纯虚析构抽象类讲解