这是否属于C++中的多态?(面向过程编程实现方式)
你的代码确实是C++多态的一种——静态多态(编译时多态)
嘿,这个问题问得挺到位的!很多人提到多态第一反应都是类里的虚函数(动态多态),但其实多态的核心是「同一个接口,多种实现」,你的这段代码完全贴合这个逻辑。
咱们慢慢理清楚:
- 你写的
return_value函数是典型的函数重载,这属于C++里的静态多态。编译器在编译阶段,就会根据你传入的实参类型(int或char),直接确定要调用哪个版本的函数,不需要等到运行时再做判断。 - 你说没找到纯面向过程的多态案例?其实你自己写的这段就是!它没有用到任何类、对象或者继承,完全是面向过程的写法,但通过函数重载实现了多态效果——调用同一个函数名,传入不同类型的参数,就能得到不同的结果。
顺便对比下大家更熟悉的动态多态(比如虚函数):那种是运行时多态,依赖类的继承和虚函数表,是面向对象编程的特性;而静态多态(函数重载、模板)则可以在纯面向过程的代码里轻松实现,本质是编译器提前帮我们完成了「匹配对应函数」的工作。
附上你的代码方便参考:
#include <iostream> using namespace std; int return_value(int a) { return 5; } char return_value(char b) { return 'a'; } int main() { int a = 1; char b = 'c'; cout << return_value(a); cout << return_value(b); return 0; }
内容的提问来源于stack exchange,提问作者XraySensei
相关产品推荐
相关产品推荐

