无规矩不成方圆 - C/C++ 多态
时间: 2023-09-24 16:09:47 浏览: 219
![ZIP](https://csdnimg.cn/release/download/static_files/pc/images/minetype/ZIP.png)
C-programming:HIT高级语言程序设计课大作业SSE答案练习代码
在 C++ 中,多态是面向对象编程的一种重要概念。它允许我们使用基类的指针或引用来调用派生类的方法,从而实现动态绑定的效果。C++ 中的多态主要分为两种:静态多态和动态多态。
静态多态是指函数重载,它是在编译时确定的。当函数被调用时,编译器会根据参数类型来选择相应的函数。例如:
```
void foo(int x) {
cout << "foo(int)" << endl;
}
void foo(double x) {
cout << "foo(double)" << endl;
}
int main() {
foo(10); // 输出 foo(int)
foo(3.14); // 输出 foo(double)
}
```
动态多态是指虚函数的实现,它是在运行时确定的。当使用基类的指针或引用来调用虚函数时,会根据指针或引用所指向的实际对象类型来选择相应的函数。例如:
```
class Shape {
public:
virtual void draw() {
cout << "Shape::draw()" << endl;
}
};
class Circle : public Shape {
public:
void draw() {
cout << "Circle::draw()" << endl;
}
};
int main() {
Shape* pShape = new Circle();
pShape->draw(); // 输出 Circle::draw()
}
```
在上面的例子中,`Shape` 类有一个虚函数 `draw()`,而 `Circle` 类重写了 `draw()` 函数。当我们使用 `Shape` 类的指针 `pShape` 来调用 `draw()` 函数时,实际上调用的是 `Circle` 类的 `draw()` 函数,这就是动态多态的实现。
总的来说,多态在面向对象编程中非常重要,它可以让我们写出更加灵活、可扩展的代码。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)