C++/服务器开发4天实战训练营

第一天:

1.四种不同的方式来实现add函数

//面向过程
int add1(int a, int b)
{
    return a + b;
}

//面向对象
class ADD{
public:
    int operator()(int a, int b)
    {
        return a + b;
    }
};

//泛型编程
template
auto add3(T a, U b) -> decltype(a + b)
{
    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;
}

2.函数和数组在本质上都是映射.

数组的下标可以看作传入的参数;

函数比较消耗计算资源;数组比较消耗存储资源

函数:压缩的数组

两者转换: 时间换空间与空间换时间.

C++/服务器开发4天实战训练营

3.编译和链接

C++/服务器开发4天实战训练营

使用nm -C可以查看文件中的符号的信息,当前函数有数字代表当前函数的定义存储在当前文件中的.

可以看到单独的.o文件中只是存储自己文件中定义的函数;而总的可执行文件a.out则存储所有需要用到的函数.

C++/服务器开发4天实战训练营

C++/服务器开发4天实战训练营

4.googletest使用

(1)第三方测试框架和被测代码的逻辑

C++/服务器开发4天实战训练营

(2)googletest下载与编译

git clone https://github.com/google/googletest.git

去执行makefile指令去编译这个工程,如果g++不是默认指定c++11,则需要在其中添加

CMakeList.txt中:

C++/服务器开发4天实战训练营

新建build文件夹,在其中执行cmake,make的指令.

然后将产生的include和lib文件夹挪到外边自己代码的目录(当然不挪也行,只是路径长一些).

C++/服务器开发4天实战训练营

5.printf的有趣用法,输出彩色文字

C++/服务器开发4天实战训练营

中间必须为”;”,且之间不能有空格.

C++/服务器开发4天实战训练营
g++ main.cpp -I include -L lib -std=c++11 -lpthread -lgtest
//可以把这部分加到makefile中
all:
    g++ main.cpp -I include -L lib -std=c++11 -lpthread -lgtest

然后只需make,就可以执行这个makefile文件了.

得到如下结果:

C++/服务器开发4天实战训练营

Original: https://www.cnblogs.com/Stephen-Qin/p/13703009.html
Author: 心媛意码
Title: C++/服务器开发4天实战训练营

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535362/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【转】c++ set的用法

    1、关于set C++ STL之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector,string,list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大…

    C++ 2023年5月29日
    049
  • Android JNI之C/C++层调用JAVA

    从C/C++层调用JAVA层代码步骤: 1. 在JAVA类中创建java方法和本地方法 public class TestNdk{ int a;//本示例中将被修改的JAVA变量 …

    C++ 2023年5月29日
    052
  • c++ 异常 warning: ‘MEMORY_UNIT_NAME’ defined but not used

    是开关的问题 , 将 #-g -O2 -pipe -W -Wall -Werror -fPIC -Wno-deprecated c++ 去掉。不检查。 Original: http…

    C++ 2023年5月29日
    068
  • 无废话–Mac OS, VS Code 搭建c/c++基本开发环境

    无废话,直接上步骤。 1) 安装 xcode。 打开App Store,搜索xcode,进行下载安装。 2)执行命令: xcode-select –install 安装…

    C++ 2023年5月29日
    056
  • 【面试攻略】C++面试-点点互动

    2020-11-23-点点互动 自我介绍 1.redis的数据结构和优化 https://blog.csdn.net/weixin_43631706/article/details…

    C++ 2023年5月29日
    054
  • c++ 异常 discards qualifiers 丢弃

    src/feedbackservice.cpp:76: error: passing const ps::spider::urlreceiver::entry::ConfigMan…

    C++ 2023年5月29日
    035
  • 当C++遇到iOS应用开发—Dict集合

    在Object-c中,字典(KEY/VALUE)使用NSDictionary 和NSMutableDictionary(可变长)。使用语法如下: NSDictionary *dic…

    C++ 2023年5月29日
    062
  • 聊聊 C++ 右值引用 和 移动构造函数

    一: 背景 最近在看 C++ 的右值引用和移动构造函数,感觉这东西一时半会还挺难理解的,可能是没踩过这方面的坑,所以没有那么大的深有体会,不管怎么说,这一篇我试着聊一下。 二: 右…

    C++ 2023年5月29日
    051
  • C++中的静态绑定和动态绑定(转)

    C++在面向对象编程中,存在着静态绑定和动态绑定的定义,本节即是主要讲述这两点区分。我是在一个类的继承体系中分析的,因此下面所说的对象一般就是指一个类的实例。首先我们需要明确几个名…

    C++ 2023年5月29日
    043
  • C++C#联合调试

    https://blog.csdn.net/BYH371256/article/details/79815097 Original: https://www.cnblogs.com…

    C++ 2023年5月29日
    059
  • Kruskal算法(二)之 C++详解

    在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。 例如,对于如上图G4所示的连通网可以有多棵…

    C++ 2023年5月29日
    056
  • const 在 C 和 C++ 中的区别

    1 C 中的 const 内存分配 1.1 修饰全局变量 cpp;gutter:true;</p> <h1>include</h1> <p…

    C++ 2023年5月29日
    046
  • Mac eclipse 编译、调试c++ 程序

    可以先安装个CDT插件: eclipse菜单 -> Help -> Install New Software… -> Work with (Add…..

    C++ 2023年5月29日
    050
  • CLion之C++框架篇-优化开源框架,引入curl,实现get方式获取资源(四)

    bash;collapse:true;;gutter:true; cmake_minimum_required(VERSION 3.11.2)</p> <p&gt…

    C++ 2023年5月29日
    060
  • C++匿名函数-Lambda表达式

    为什么存在匿名函数 使用 STL 时,往往会大量用到函数对象,为此要编写很多函数对象类。有的函数对象类只用来定义了一个对象,而且这个对象也只使用了一次,编写这样的函数对象类就有点浪…

    C++ 2023年5月29日
    061
  • C++接口设计和代码重构

    讲了接口设计, 文档(doxygen),测试等方面。对于从头编写基础库, 或者没有基础库开发经验并且需要短期内上手, 有一定实际参考价值。 所谓Mikado Method方法是用来…

    C++ 2023年5月29日
    052
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球