C++多态问题!!!

来源:百度知道 编辑:UC知道 时间:2024/06/30 19:18:21
覆盖是指派生类函数覆盖基类函数,特征是
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。
覆盖:调用派生类
那么,多态不就是通过基类引用或指针调用基类的虚函数时产生的吗,那按照上面的意思不是就都是调用派生类的了?不能理解,还望大家指点!!

基类对象就调用基类的,派生类对象就调用派生类的。比如
class A {
public: virtual void test() {...}
}
class B : public A {
public: virtual void test() {...}
}

那么
A* a = new A();
a->test();调用的是基类的
A* b = new B();
b->test();调用的是派生类的。

如果在A中不申明virtual,
那么
A* b = new B();
b->test(); 会调用基类的。