C++多态

来源:互联网 发布:sql with树形 编辑:程序博客网 时间:2024/05/21 14:53

测试代码,理解C++的多态。
1、多态的实现机制,虚函数;
2、多态实现的三要素:1)继承,2)重写,3)虚函数
理解:
在C++中,多态的应用是很强大的,也是面试中必问的话题,所以在这里我想根据自己的理解总结一下:
在C++中要实现多态,以上的三要素必须满足,必要有父子类之间的继承关系,而且父类的函数必须是虚函数,在子类中必须重写父类的方法。例如下面的示例代码。

#include <iostream>using namespace std;class A{    public:    //A(){cout << "this A\n";}    //~A(){cout << "this ~A\n";}    //A(const A&){cout << "this &A\n";}    virtual void print(){cout << "this A\n";}};class B:public A{    public:    //B(){cout << "this B\n";}    //~B(){cout << "this ~B\n";}    //B(const B&){cout << "this &B\n";}    virtual void print(){cout << "this B\n";}};/*这是测试函数,参数是指向基类的指针*/void test(A *p){    p->print();}int main(void){    A aa;//创建基类对象    B bb;//创建子类对象    test(&aa);//调用测试函数    cout << "------------------\n";    test(&bb);//调用测试函数}

输出结果:

tsong@tsong:~/exc$ ./a.out this A------------------this Btsong@tsong:~/exc$

可以看出,当我们定义基类的指针指向不同的对象时,函数的输出结果是不一样的这就是多态的强大之处,也就是说,我们定义同一个接口(函数),在不同的子类中去重写它,此时我们的接口函数就会是动态调用的。

0 0
原创粉丝点击