c++多态怎么用向量实现多态,代码
时间: 2024-06-18 11:03:47 浏览: 119
C++经典代码大全(超级详细)
在C++中,通过使用向量(vector)可以很方便地实现多态。具体实现方式如下:
1. 定义一个基类,其中包含一个虚函数
```
class Base {
public:
virtual void func() {
// 这里是基类的函数实现
}
};
```
2. 定义若干个派生类,其中重写虚函数
```
class Derived1 : public Base {
public:
void func() override {
// 这里是派生类1的函数实现
}
};
class Derived2 : public Base {
public:
void func() override {
// 这里是派生类2的函数实现
}
};
// 其他的派生类...
```
3. 创建一个向量,将若干个派生类对象添加到其中
```
vector<Base*> vec;
vec.push_back(new Derived1());
vec.push_back(new Derived2());
// 将其他的派生类对象也添加到向量中...
```
4. 遍历向量中的对象,调用虚函数实现多态
```
for (auto obj : vec) {
obj->func(); // 这里会根据对象的实际类型来调用相应的函数
}
```
至于完整的代码实现,可以参考以下示例代码:
```
#include <iostream>
#include <vector>
using namespace std;
class Base {
public:
virtual void func() {
cout << "This is the function of the base class." << endl;
}
};
class Derived1 : public Base {
public:
void func() override {
cout << "This is the function of derived class 1." << endl;
}
};
class Derived2 : public Base {
public:
void func() override {
cout << "This is the function of derived class 2." << endl;
}
};
int main() {
vector<Base*> vec;
vec.push_back(new Derived1());
vec.push_back(new Derived2());
for (auto obj : vec) {
obj->func();
}
return 0;
}
```
阅读全文