关于多态性定义

来源:百度知道 编辑:UC知道 时间:2024/06/28 00:19:55
书上说:
覆盖和重载不能体现真正的多态性,只有虚函数才是多态性的体现。一个程序设计的语言,如果不支持多态性,那就不能称之为面向对象的语言。

我想知道关于多态性的定义,换句话说什么是多态性?

多态就是用挂着父类的羊头,卖着子类的羊肉。是一种根据子类具体对象调用具体子类需函数的机制,楼上的讲的不错

简单的说,建立一个父类的变量,它的内容可以是这个父类的,也可以是它的子类的,当子类拥有和父类同样的函数,当使用这个变量调用这个函数的时候,定义这个变量的类,也就是父类,里的同名函数将被调用,当在父类里的这个函数前加virtual关键字,那么子类的同名函数将被调用

class A {
public:
A() {}

virtual void foo() {
cout << "This is A." << endl;
}
};

class B : public A {
public:
B() {}

void foo() {
cout << "This is B." << endl;
}
};

int main(int argc, char* argv[]) {

A *a = new B();
a->foo();

return 0;
}

这将显示:
This is B.

如果把virtual去掉,将显示:
This is A.