派生和虚函数

来源:互联网 发布:老a淘宝卖家工具箱 编辑:程序博客网 时间:2024/06/10 11:41

c++在类的设计过程中经常要涉及到派生和虚函数的概念。

派生:从一个类构造另一个类的方法,使新构造的类可以替换原来的类。派生类除了自己的成员以外,还包括基类的所有成员。这通常也称作继承,因为派生类继承了其基类的所有成员。我们一般将派生类称为子类,称其基类为父类。

虚函数:在基类中定义一个函数,在派生类中有一个类型和名称完全一样的函数,当用户调用基类函数时,实际上调用的是派生类中的函数。这通常称为运行时多态,因为具体调用哪个函数是根据运行时实际使用的对象类型来确定的。

值得注意的是,一个虚函数必须在类的声明中被声明为virtual。另外,当希望覆盖一个虚函数时,必须使用与基类中完全相同的名字和类型。

举一个例子来说明类的派生,虚函数及其覆盖。

运行结果如下


B是一个基类,D,DD都是其派生类,在B的定义中,f()是虚函数,g()不是虚函数。

call(b)调用B的f(),g()。

call(d)调用D的f(),B的g(),这正是虚函数的用处,使用户在调用基类函数时调用的是派生类中的函数。

call(dd)调用D的f(),B的g()。这个地方需要注意,因为在DD的定义中,如果希望覆盖虚函数,则必须使用与基类中完全相同的名字和类型,这个地方差了一个const。因此,这个地方调用的是DD继承的父类的f()。

至于最后三个输出,就是直接输出三个类中的成员,比较好理解。



0 0