1.说明
C++允许多继承(区别于java,不能多继承,需要使用接口),但是C++的多继承也带来了 用户层面理解盲区(例如:内存布局等)
2.代码测试
实现一个基础的继承
class A{
public:
int a;
int b;
virtual void function1()
{
cout<<"this is class A ,function1 !"<<endl;
}
};
class B{
public:
int a;
int b;
virtual void function2()
{
cout<<"this is class B, function2 !"<<endl;
}
};
//class C extend A B
class C :public A, public B //1. 没有指明这个bulic 默认就是private继承
{
public:
int a;
int b;
virtual void function3()
{
cout<<"this is calss C, function3 !"<<endl;
}
//Class C里面新增加一个新的虚函数,这个函数和其他函数关系
virtual void function4()
{
cout<<"this is new virtual, before C obj is 40 !"<<endl;//这个虚函数的地址,是放到了A的虚函数表,还是B的虚函数表??
}
};
3.直接看结果
- 多继承C类,实例化后含有AB类中的成员变量(public的,注意private的也是占大小的)
- 注意访问继承的成员变量
- static成员变量在全局区!!
您还没有登录,请您登录后发表评论。