C++里,多态和继承有什么关系?请举例说明
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/28 03:28:38
C++里,多态和继承有什么关系?请举例说明
How is polymorphism related to inheritance?Give an example please.
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(); 会调用基类的
用一个基类指针或引用来操纵多个派生类型的能力被称为多态性.
在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(); 会调用基类的
在英语中,定语从句里的关系代词that和which有什么区别?请举例说明
什么叫描写?和叙述有什么关系?描写分为哪几种,请举例说明.
区间估计与假设检验有什么关系,请举例说明
语素与词有什么关系?请举例说明语素与词的关系?有哪些例子可以很明白地解释“语素”和“词”的关系呢?
举例说明物质的性质和用途有什么关系?
六西格玛理论和食品质量安全有什么关系 最好举例说明
化合反应和氧化反应有什么关系?举例说明
物种的消失和人类运动有什么关系(举例说明 )
什么叫动宾关系,请举例说明
请问 文化的继承,发展与创新有什么关系
文学理论史上,关于文学典型有哪些说法?请举例说明.典型人物与典型环境有什么关系?举例说明.
in和inside有什么区别,请举例说明.