C++的黑魔法: 用四种方式实现add!

时间:2022-07-25
本文章向大家介绍C++的黑魔法: 用四种方式实现add!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

C++作为一门多范式编程语言, 今天我们来看看实现一个简单的加法, 我们可以有多么不同的四种方式!

函数

首先当然是最简单的函数实现

int add1(int a, int b)
{
    return a + b;
}

操作符重载

然后是用对象操作符重载来弄一个

class Add
{
    public:
        int operator()(int a, int b)
        {
            return a + b;
        }
};

模板编程

->dcltype表示获取变量的类型作为返回值类型, auto用来"接"这个获取到的类型

template <typname T>
auto add3(T a, T b) -> decltype(a)
{
    return a + b;
}

函数式编程

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

完整代码

#include <iostream>

using namespace std;

int add1(int a, int b)
{
    return a + b;
}

class Add
{
    public:
        int operator()(int a, int b)
        {
            return a + b;
        }
};

template <typename T>
auto add3(T a, T b) -> decltype(a)
{
    return a + b;
}

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

int main()
{	
	Add add2;
	cout << add1(3, 4) << endl;
    cout << add2(3, 4) << endl;
    cout << add3(3, 4) << endl;
    cout << add4(3, 4) << endl;
	return 0;
}

测试过程

g++ hello.cpp -o hello -std=c++11
./hello
image.png

小结

C++可以用过程式编程, 对象式编程, 模板/泛型编程, 函数式编程.

今天这四个add方法充分体现了这四种风格的编程. 其实不难, 关键是在合适的场景用合适的方式来解决问题.