c++如何使用虚函数实现多态性
时间: 2023-11-06 17:16:43 浏览: 127
在C++中,使用虚函数实现多态性需要遵循以下步骤:
1. 定义一个基类,并在其中声明一个虚函数。例如:
```
class Shape {
public:
virtual void draw() {}
};
```
2. 定义一个或多个派生类,并覆盖基类的虚函数。例如:
```
class Circle : public Shape {
public:
void draw() override {}
};
class Square : public Shape {
public:
void draw() override {}
};
```
3. 在主程序中创建基类指针,并使用派生类的对象进行初始化。例如:
```
Shape* pShape = new Circle();
```
4. 调用基类的虚函数,实际上会调用派生类的虚函数。例如:
```
pShape->draw();
```
这样就实现了多态性。在运行时,程序会根据对象的实际类型来调用相应的虚函数,而不是根据指针类型来进行静态绑定。
相关问题
如何使用虚函数实现多态性?
使用虚函数可以实现多态性。在C++中,将一个基类中的函数声明为虚函数,派生类中重写该虚函数,则在运行时会根据实际对象的类型来调用相应的函数,这就是多态性。具体实现步骤如下:
1. 在基类中声明虚函数。通过在函数声明前加上关键字virtual来声明一个虚函数。
2. 在派生类中重写虚函数。在派生类中重新定义该虚函数,函数名、参数类型和返回类型都必须与基类中的虚函数完全相同。
3. 创建对象并调用虚函数。通过创建基类对象或派生类对象,然后调用虚函数,可以实现多态性。
例如:
```
class Animal {
public:
virtual void speak() {
cout << "Animal speaks!" << endl;
}
};
class Cat : public Animal {
public:
void speak() {
cout << "Cat meows!" << endl;
}
};
int main() {
Animal* animal1 = new Animal();
Animal* animal2 = new Cat();
animal1->speak(); // 输出:Animal speaks!
animal2->speak(); // 输出:Cat meows!
return 0;
}
```
在上述代码中,Animal类中的speak函数被声明为虚函数,并在Cat类中被重写。在main函数中,通过创建Animal对象和Cat对象,并分别调用speak函数,可以看到根据对象的实际类型,调用的函数不同,实现了多态性。
如何使用虚函数实现多态性
在 C++ 中,可以使用虚函数来实现多态性。所谓多态性,就是同一个函数名可以有多种不同的实现方式,这些实现方式可以根据不同的对象类型进行调用。
具体实现步骤如下:
1. 在基类中定义虚函数,使用 virtual 关键字修饰。例如:
```
class Animal {
public:
virtual void speak() {
std::cout << "I am an animal" << std::endl;
}
};
```
2. 在派生类中重写基类的虚函数,使用 override 关键字修饰。例如:
```
class Cat : public Animal {
public:
void speak() override {
std::cout << "I am a cat" << std::endl;
}
};
```
3. 创建基类指针,并让它指向派生类对象。例如:
```
Animal* animal = new Cat();
```
4. 调用虚函数,会根据指针所指向的对象类型来调用相应的实现。例如:
```
animal->speak(); // 输出 "I am a cat"
```
这样就实现了多态性。通过虚函数,我们可以在基类中定义一些通用的行为,而在派生类中根据具体需求进行重写,从而实现不同的行为。
阅读全文
相关推荐
















