前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++的黑魔法: 用四种方式实现add!

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

原创
作者头像
陈小龙Cheney
发布2020-09-23 15:30:16
9730
发布2020-09-23 15:30:16
举报
文章被收录于专栏:后端技术杂记

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

函数

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

代码语言:txt
复制
int add1(int a, int b)
{
    return a + b;
}

操作符重载

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

代码语言:txt
复制
class Add
{
    public:
        int operator()(int a, int b)
        {
            return a + b;
        }
};

模板编程

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

代码语言:txt
复制
template <typname T>
auto add3(T a, T b) -> decltype(a)
{
    return a + b;
}

函数式编程

代码语言:txt
复制
auto add4 = [](int a, int b) -> int
{
    return a + b;
}

完整代码

代码语言:txt
复制
#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;
}

测试过程

代码语言:txt
复制
g++ hello.cpp -o hello -std=c++11
./hello
image.png
image.png

小结

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 函数
  • 操作符重载
  • 模板编程
  • 函数式编程
  • 完整代码
  • 测试过程
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档