filesystem
c++11
在CMakeList.txt
find_package(Boost COMPONENTS system filesystem regex REQUIRED)
include_directories ( ${Boost_INCLUDE_DIRS})
target_link_libraries(projectname ${Boost_LIBRARIES})
程序
#include<boost/filesystem.hpp>
namespace bf=boost::filesystem;//简单别名
c++17
filesystem 源自 boost.filesystem 库,在C++17合并进C++标准库中
C++版本
C++编译器的版本、
C++标准库的版本
命令行 :gcc --version
g++ -dM -E -x c++ /dev/null | grep -F __cplusplus
ls /usr/bin/ |grep gcc
cpp命令是C预处理器,也可以用来查看C++版本
查看支持的对应的C++版本
C++标准 __cplusplus值
C++ 11 201103L
C++ 14 201402L
C++ 17 201703L
也可以指定c++标准
Ubuntu18默认是g++7,不支持c++17标准,因此升级到g++10.
构建遇到的问题
1.操作系统的问题 Linux pthread的引入
2.C++版本问题 c++17,本地版本用的时c++11 ,其中filesystem的区别
3..inl 文件是什么? 可以理解为 .cpp 文件 仅一种约定的规则,表明这里这里面是一些内联函数和模板的实现
且通常会在 .h 文件的尾部,使用 #include 包含此文件
运算符重载
C++允许将运算符重载扩展到用户定义的类型
封装--隐藏数据--数据私有
严格私有--类 public 方法
后门:非成员函数--友元 friend 访问类私有变量 元函数看作类的扩展接口的组成部分
声明: 友元函数的第一步是将其原型放在类声明中, 并在原型声明前加上关键字friend
定义: 编写函数定义
封装--隐藏方法--隐藏了内部机理--运算符重载
多态:重载(编译时多态)
编译时多态(静态多态 函数重载和函数模板,
运行时多态(动态多态) 虚函数的重写/覆盖 子类的虚函数重写了父类的虚函数
重载--例如 Overloading
函数重载-函数重载(Function Overloading 同一个作用域内定义多个同名函数,
但这些函数必须有不同的参数列表(即参数的类型、个数或顺序不同)
运算符重载:
操作数的数目和类型决定使用哪种加法定义
重载定义和重载实现和重载应用 --调用对象和函数参数传递对象
函数表示法-- obj1.operator+(obj2)
运算符表示法 obj1+obj2
重载限制:不能违反运算符原来的句法规则,不能创建新运算符。
重载后的运算符必须至少有一个操作数是用户定义的类型
四种只能通过成员函数进行重载。
=: 赋值运算符。
( ): 函数调用运算符。
[ ]: 下标运算符。
->: 通过指针访问类成员的运算符
友元:friend
常用的友元: 重载<<运算符
运算符来说, 可以选择使用成员函数或友元函数来实现运算符重载
标准库中的重载:一个符号有多种含义的
<< 运算符是C和C++的位运算符 ostream类对该运算符进行了重载, 将其转换为一个输出工具。
构造函数
构造函数:
初始化具名对象 初始化自由存储上的对象 初始化临时对象
实现显式类型转换
对象的拷贝或者移动
作为赋值操作的源
作为一个对象初始化器
作为一个函数的实参 作为一个函数返回值
作为一个异常
对象移动:并不是内存的数据移动,而是变更所有权;
std::move():本身不移动对象,只是把对象的类型转换为右值
CyberRT
方式一启动
mainboard 是 cyberRT 的入口,init 方法都在这里触发
// 初始化cyber框架
apollo::cyber::Init(argv[0]);
//ModuleContriller
###方式二启动
启动cyber模块 初始化cyber框架
apollo::cyber::Init(argv[0]);/
apollo::cyber::CreateNode ;// 创建一个节点每个Node负责创建Reader/Writer, Service/Client组件获取信息或者传达信
CreateReader
cyber.h 有一个 CreateNode 方法,返回的是 Node 的引用
Node.h 文件 一个 Node 有一系列相关的 Reader
Reader
Reader 通过订阅 Channel 获取信息 收到信息时会触发传递到 Reader 的回调 callback
Reader 和 Channel 是相关联的,由 ChannelManager 进行管理。
Reader 会和一种 Topology 网络发生关系
TopologyManager 元素之间的关系 3 个子 Mannager:NodeManager、ChannelManager、ServiceManager
Component 的基类是 ComponentBase
通过 Scheduler 进行调度 Init 和 Proc 的调用是由 CyberRT Frame 驱动的
TimerComponent 同样继承自 ComponentBase
Timer 的内部又有两个关键成员变量类型 TimingWheel 和 TimerTask
init.c
scheduler
策略不同有 SchedulerClassic 和 SchedulerChoreography 两种
Scheduler 会根据 Node 的名字创建一个 Task
scheduler 会将 node 与 CRoutine 建立联系,然后与 Processor 也建立联系
参考
C++实战项目推荐 https://pokeai.cn/79.html
标签:函数,--,c++,运算符,C++,重载
From: https://www.cnblogs.com/ytwang/p/18602986