这段代码是一个简单的 C++ 程序,它定义了两个类 Person
和 pjx
,并在 main
函数中进行调用。
Person
类是一个基类,其中定义了一个虚函数speak()
,输出 "person is speaking"。pjx
类是Person
类的派生类,重写了speak()
函数,输出 "pjx is speaking"。speak1()
函数接受一个Person
类型的引用参数p
,然后调用p
的speak()
函数。- 在
main
函数中,创建了一个Person
类型的对象p
和一个pjx
类型的对象pjx1
。分别通过speak1()
函数调用pjx1
和p
的speak()
函数。
如果Person类中的speak()函数不加virtual则全局函数speak1()无论是传入子类还是父类都会调用父类,即Person类中的speak()函数。
多态使用条件:父类指针或引用指向子类对象
#include <iostream>
using namespace std;
class Person
{
public:
virtual void speak()
{
cout<<"person is speaking"<<endl;
}
};
class pjx: public Person
{
public:
void speak()
{
cout<<"pjx is speaking"<<endl;
}
};
void speak1(Person &p)
{
p.speak();
}
int main()
{
Person p;
pjx pjx1;
speak1(pjx1);
speak1(p);
return 0;
}