具体一点是什么样子的代码
时间: 2024-10-16 08:01:13 浏览: 26
可以举个例子来说明多态性的实现方式。假设有一个基类Animal,它有一个虚函数speak(),然后派生出两个子类Dog和Cat,它们分别重写了基类的speak()函数。具体代码如下:
```
class Animal{
public:
virtual void speak(){
cout<<"This is an animal"<<endl;
}
};
class Dog: public Animal{
public:
void speak(){
cout<<"This is a dog"<<endl;
}
};
class Cat: public Animal{
public:
void speak(){
cout<<"This is a cat"<<endl;
}
};
```
可以看到,在基类Animal中声明了一个虚函数speak(),在派生类Dog和Cat中重写了这个虚函数。如果我们定义一个指向基类Animal的指针,然后用这个指针分别指向Dog和Cat的对象,再调用speak()函数,可以看到它们的输出是不同的。具体代码如下:
```
int main(){
Animal *p1=new Dog();
Animal *p2=new Cat();
p1->speak(); //输出 This is a dog
p2->speak(); //输出 This is a cat
return 0;
}
```
可以看到,p1和p2都是指向Animal类型的指针,但是它们分别指向了Dog和Cat的对象,并且调用speak()函数时输出的结果也不同。这就是多态性的体现,同样的函数名speak()在不同的对象中表现出不同的行为。
阅读全文