C++中的多继承

在学习C++的过程中多继承和多重继承很重要,下边就自己的学习过程讲解一下C++中的继承问题:

多继承问题,先来看一段程序

#include<iostream>
using namespace std;
class CBase
{
public:
CBase(){ cout << "wo" << endl; }
~CBase(){ cout << "women" << endl; }
virtual void f1(){ cout << "f1ffff" << endl; }
void f2(){ cout << "f2ffff" << endl; }


};
class WWW
{
public:
WWW(){ cout << "xue" << endl; }
~WWW(){ cout << "xuexi" << endl; }
};
class CSub :public CBase, public WWW
{
public:
CSub(){ cout << "ni" << endl; }
~CSub(){ cout << "nimen" << endl; }
virtual void f1(){ cout << "f1www" << endl; }
void f2(){ cout << "f2www" << endl; }


};
int main()
{
CBase *p1 = new CBase;
CBase *p2 = new CSub;
CSub obj1;
p2->f1();
p2->f2();
delete p1;
delete p2;
cout << "endl" << endl;
return 0;

运行结果如下:

wo
wo
xue
ni
wo
xue
ni
f1www
f2ffff
women
women
endl
nimen
xuexi
women

多继承是指一个子类继承多个父类。多继承对父类的个数没有限制,继承方式可以是公共继承、保护继承和私有继承,

不写继承方式,默认是private继承。

从程序和结果中我们可以看到
在多继承中,任何父类的指针都可以指向子类的对象,在实例化子类时,先根据继承的顺序依次调用父类的构造函数,然后再调用该子类自己的构造函数。用delete时是访问父类函数的析构函数;类指针访问虚构函数位子类的虚构函数,一般函数访问的是定义指针父类的函数,没定义一个类指针,该指针就访问一遍父类到子类的主函数,当定义一个子类时就遍访一边父类到子类的主函数一边,,当程序结束时前边定义了一个类对象时,在程序结束时要遍访一边子类到父类的析构函数,而且程序最后定义的对象在结束时首先被访问析构函数。(暂时写这些以后继续补充)

猜你喜欢

转载自blog.csdn.net/ultimate1212/article/details/78073140