您的位置:首页 > 编程语言 > C语言/C++

C++多态

2016-05-14 09:54 253 查看
测试代码,理解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 B
tsong@tsong:~/exc$


可以看出,当我们定义基类的指针指向不同的对象时,函数的输出结果是不一样的这就是多态的强大之处,也就是说,我们定义同一个接口(函数),在不同的子类中去重写它,此时我们的接口函数就会是动态调用的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: