C++的四种编程范式

  |  

摘要: C++ 中的四种变成范式:面向过程、面向对象、泛型编程、函数式编程

【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:算法题刷刷
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings


编程泛型是指一类典型的编程风格,不同的编程泛型代表了程序员对程序执行的不同的看法。例如,在面向对象编程中,程序员认为程序是一系列相互作用的对象,而在函数式编程中程序员认为程序是一个无状态的函数计算的序列等等。

正如软件工程中不同的群体会提倡不同的方法论一样,不同的编程语言也会提倡不同的编程范型。一些语言是专门为某个特定的范型设计的,例如 Haskell,同时还有一些语言支持多种范型,例如 Python。

C++ 就是同时支持多种编程泛型的,比较经典的是以下四种:

  • 面向过程编程
  • 面向对象编程
  • 泛型编程
  • 函数式编程

下面我们 a + b 这个功能用不同的编程泛型是怎么实现的。

面向过程: 函数

1
2
3
4
int add1(int a, int b)
{
return a + b;
}

面向对象: 类

1
2
3
4
5
6
7
8
class Add2
{
public:
int operator()(int a, int b)
{
return a + b;
}
};

泛型编程: 模板

1
2
3
4
5
template<typename T, typename U>
auto add3(T a, U b) -> decltype(a + b)
{
return a + b;
}

函数式编程: lambda表达式

1
2
3
4
auto add4 = [](int a, int b) -> int
{
return a + b;
};

以上就是用四种不同的编程泛型实现的 a + b 这个功能,下面的代码以 8 + 7 为例子看看使用方如何调用。

1
2
3
4
5
6
7
8
int main()
{
Add2 add2;
cout << add1(3, 4) << endl;
cout << add2(3, 4) << endl;
cout << add3(3, 4) << endl;
cout << add4(3, 4) << endl;
}

可以看到在使用方这里,不同编程泛型实现的功能的使用方式几乎完全一样。


Share