C++里,多态和继承有什么关系?请举例说明How is polymorphism related to inheritance?Give an example please.
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/28 21:50:53
C++里,多态和继承有什么关系?请举例说明How is polymorphism related to inheritance?Give an example please.
C++里,多态和继承有什么关系?请举例说明
How is polymorphism related to inheritance?Give an example please.
C++里,多态和继承有什么关系?请举例说明How is polymorphism related to inheritance?Give an example please.
有了继承,指向基类类型的指针或引用就可以被用来指向派生类类型的对象.然后就可以编写程序来操纵这些指针或引用而不用考虑它们所指向的对象的实际类型.
用一个基类指针或引用来操纵多个派生类型的能力被称为多态性.
在C++中,多态性分为两种,一种称为编译时多态,另一种为运行时多态
分别解释下:
1.编译时多态,也就是函数重载,所谓函数重载是指同一个函数名可以对应着多个函数的实现,具体调用哪个按照由参数个数,参数类型等来决定,这个简单,就不说了
2.运行时多态,就是虚函数.在定义了虚函数后,可以在基类的派生类中对虚函数重新定义,以实现你所想要的功能.
比如:
class A {
public:virtual void test() {...}
void display(){...}
};
class B :public A {
public:virtual void test() {...}
void display(A& a){ a.display(); }
};
那么
A* a = new A();
a->test();调用的是基类的
A* b = new B();
b->test();调用的是派生类的.
如果在A中不申明virtual,
那么
A* b = new B();
b->test(); 会调用基类的