·多态的概念
多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。——百度百科
说的通俗一点,多态就是多种形态,当不同的对象去完成同一个行为时会产生不同的状态。比如我们去一些商店,普通顾客不打折,学生顾客可以打八折,这就是多态的一种表现形式。就像下面的例子一样:
class Person
{
public:
virtual void Buy()
{
cout << "全价" << endl;
}
};
class Student :public Person
{
public:
virtual void Buy()
{
cout <<"八折" << endl;
}
};
void Func(Person &people)
{
people.Buy();
}
int main()
{
Person Mike;
Student Jack;
Func(Mike);
Func(Jack);
system("pause");
return 0;
}
通过上面的代码运行之后,我们发现Mike和Jack由于身份的不同,行为也产生了不同。在代码中就表现在基类和派生类的方法不同。
·多态的定义及实现
·多态定义的构成条件
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买东西全价,Student买东西半价。
那么在继承中构成多态还有两个条件:
1.调用函数的对象必须是指针或者引用。
2.被调用的函数必须是虚函数,且完成了虚函数的重写。
那么我们首先看第一点,为什么多态的实现中调用函数的对象必须是指针或者引用&#x