void *
void *是无类型指针,可以与其他指针随意进行转化。malloc返回的就是void *,需要通过强制类型转换变成指定单元的指针
纯虚函数外界调用相关:
C++使用纯虚函数的接口封装以及接口的调用方法
#pragma once
预处理指令,保证头文件只编译1次。必须放在文件最开始的地方。但pragma once不是跨平台的,跨平台的使用#ifndef #define #endif
#include< chrono>
C++11中提供的时间库
https://blog.youkuaiyun.com/qq_36336522/article/details/79410813
constexpr变量
C++11,将变量声明为constexpr便于编译器验证变量是否为常量表达式,constexpr代表一定按照常量表达式处理,在编译器计算
参考:https://blog.youkuaiyun.com/weixin_40087851/article/details/82754189
using三种用法:
1.命名空间 using namespace xxx;
2.子类中引用基类成员,using Father::data;
3.设置别名 using Id = int 以后出现Id都是int
TimerBase(const TimerBase &) = delete;
=delete是禁用类成员,取消一些默认的构造函数
template <typename… Args>
int call(Args &&…args);
C++11新特性:可变模板参数,参数任意个数,任意类型
#include
断言库,断言用于调试,在非真(可能错误)发出信息提示,并终止异常程序
g++参数
-g 可执行文件可以使用gdb调试
-O3 使用O3级优化,其余优化等级包括O2/O1
-std=c++17 使用c++17标准编译 g++支持C++11/14/17
< chrono>库
std::chrono::system_clock::now()返回值是time_point类型,该类型不能直接cout输出,要使用std::chrono::system_clock::to_time_t()转化成time_t类型,转化输出的是秒数(1970年1月1距今)。然后可以通过ctime转换成具体的时间格式
exit()函数
必须有参数exit(0)/exit(1)/exit(-1)
头文件:stdlib.h
exit(0); // 程序正常退出
回调函数
主程序调用函数A,但是函数A的完成需要调用函数B,在主程序中将B作为参数传给A供A调用,B就是回调函数
回调函数常用typedef转成对象名
#ifndef
#define
#endif
作用:
1)防止头文件被重复包含和编译
#include”a.h”
#include”b.h”
但b中又引用一次a,a会被编译两次
2)防止重复定义
主文件中int b。include”a.h” a中也int b;
参考:【C/C++】ifndef/define/endif的作用_大熊啾啾的博客-优快云博客_ifndefdefineendif的作用