c++学习

c++学习

hpp(Header Plus Plus ):计算机术语,指用C/C++语言编写的头文件,通常用来定义数据类型,声明变量、函数、结构和类。

  1. 是Header Plus Plus 的简写。
  2. 与*.h类似,hpp是C++程序头文件 。
  3. 是VCL 专用的头文件,已预编译
  4. 是一般模板类的头文件。
  5. 一般来说,.h里面只有声明,没有实现,而.hpp里声明实现都有,后者可以减 少.cpp的数量

CPP:

  • 全局变量的定义(及初始化)
  • 全局函数的定义

makefile:

需要掌握知识点:

基础知识:

​ 声明、标识符和关键字、修饰符(数据限定符4个suls、类型限定符3个cvr)、存储类(5个arsem,定义变量/函数的范围(可见性)和生命周期)

​ 数据类型、常量与变量(全局变量、作用域)、运算符(算术、关系、逻辑、位)、初等表达式,lambda表达式、指针(const/函数/野指针/智能指针)、赋值/判断与循环

函数(传值调用、指针调用、引用调用)、内联函数/递归函数

枚举类型、结构体(包容一切)、联合体(高效组合)、

c++面向对象:

​ 类(继承/多态/重载)、数据抽象、数据封装、接口(抽象类)

c++高级:

​ 文件和流:3类,ofstream/ifstream/fstream

​ 异常处理:throw/catch/try

​ 动态内存:栈/堆、new/delete、new/malloc()区别、数组动态内存分配、对象动态内存分配、构造函数/析构函数(~func())

​ 命名空间(变量、函数):定义/使用、不连续/嵌套的命名空间

​ 模板:泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。函数模板/类模板

​ 预处理器:

​ 预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前。预处理指令不是 C++ 语句,所以它们不会以分号(;)结尾。比如 #include、#define、#if、#else、#line 等。

​ 信号处理:

​ 编译和调试:(GCC 编译、gdb 调试工具、会写makefile)

​ 多线程编程:线程(创建、停止、连接&分离线程)、资源、信号、同步、互斥、锁

​ 多进程

​ 泛型编程

​ 网络编程:TCP/IP ,IO函数

资源库:

​ STL(标准模板库):容器(顺序、关联容器)、算法、迭代器、生成器

​ 标准库:标准函数库、面向对象类库

备注:标准库包含标准模板库

vscode编辑器配置

vscode配置c++环境

https://mp.weixin.qq.com/s/_qEy7MA2vnKr-p0w9Lgl3w

安装插件:

  • c/c++
  • c/c++ Extension Pack
  • Better C++ Syntax
  • c/c++ Runner

项目配置

https://mp.weixin.qq.com/s/_qEy7MA2vnKr-p0w9Lgl3w

c_cpp_properties.json

​ 用于使用vscode自带的代码提示工具,支持代码跳转等

CTRL+SHIFT+P ,然后搜索 c++:ui 选择。

tasks.json

​ 用于编译c++文件

  1. 交互面板,输入task
  2. 选择tasks: Configure Default Build Task
  3. 选择Create tasks.json file from template
  4. 选择Others, 会在.vscode下面自动创建tasks.json,在编辑器中打开
  5. 进行如下配置
{
    "version": "2.0.0",
    "tasks": [
      {
        "label": "Build with Clang", //这个任务的名字在launch.json最后一项配置
        "type": "shell",
        "command": "clang++",
        "args": [
          "-std=c++17",
          "-stdlib=libc++",
          "-g",
          // 生成调试信息,GUN可使用该参数
          "${file}",
          // file指正在打开的文件
          "-o",
          // 生成可执行文件
          "${fileDirname}/${fileBasenameNoExtension}"
          // fileDirname指正在打开的文件所在的文件夹
          // fileBasenammeNoExtension指没有扩展名的文件,unix中可执行文件属于此类
        ],
        "options": {
          "cwd": "${workspaceFolder}"
        },
        "problemMatcher": ["$gcc"],
        "group": {
          "kind": "build",
          "isDefault": true
        }
      }
    ]
  }

launch.json

​ 用于使用vscode自带的debug工具

在debug页面,点击打开lanch.json文件。

项目文件树:

c++项目实战介绍

c++工程的一般结构
  • 头文件:类和函数的声明等,一般放在include文件夹下
  • 源代码:类和函数的具体实现,一般放在src文件夹下【开源】
  • 静态连接库:事先编译好的静态库(如.a和.lib文件),一般放在lib文件夹下
  • 二进制文件:事先编译好的动态库(如.so和.dll文件),以及一些可执行程序(如.exe文件等),一般放在bin文件夹下。
  • 资源文件:程序用到的图片、音视频、模型等
  • 构建系统:如CMake或Makefile脚本(帮助编译&链接库),或其他IDE工程文件
  • 自述文件:说明(ReadMe)和协议(License)
c++头文件的编写方式
  • 预编译语句:防止重复编译
  • 只放类的声明、函数原型、#define、静态/常量定义等
  • 具体实现和变量定义等放在.cpp中(模板类可在.h中实现)
第三方库的调用
  • 下载(编译)第三方库(头文件+链接库)
  • 引入头文件,设置头文件路劲
  • 添加链接库(库文件,路径)
一个完整的项目示例

基于openCV的目标检测算法部署

  • 主要目录:include、src、third_parth、resources
  • 第三方库:OpenCV、MinGW编译
  • CodeBlocks传入命令行参数

sources

header

推荐书籍

《unix高级编程》

《剑指offer》

《Essential C++ (由c过度到c++)》

《 C++ Primer第四版 (内容很全,但是不深)》

《C++ 标准程序库》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值