c++
C++多态
什么是多态面向对象的三大特性:封装、继承、多态。
封装:隐藏对象的属性和实现细节,仅对外公开访问方法,并且控制访问级别在面向对象方法中。简言之,用类实现封装,用封装来实现高内聚,低耦合。
继承:从已有的类中派生出新的类,新的类能吸收已有类的属性和行为, 可以实现重用代码和扩展新的能力。
多态:指通过基类的指针或者引用,...
C++ Pimpl技术
什么是Pimpl技术Pimpl,Pointer to Implementation,意为“具体实现的指针”,有着“编译防火墙(compilation firewall)”的名头。
它通过一个私有的成员指针,将指针所指向的类的内部实现数据进行隐藏,降低耦合性和分离接口实现的一个现代 C++ 技术。
C++函数重载和函数重写
基本概念对于C++中经常出现的函数名称相同但是参数列表或者返回值不同的函数,主要存在三种情况:
C++简单log
平常写一些简单验证程序时,需要频繁输出日志信息便于调试。为了后续验证程序中输出日志信息方便,将平时使用的日志信息抽象成了INFO和FUNC。
INFO输出单行日志信息,可以输出当前的时间(格式:%Y-%m-%d %H:%M:%S)、进程号和线程号。
FUNC利用RAII可以在生命周期(比如函数)的开始和结束分别打印日志信息,并统计执行耗时(单位微妙)
VS2019 CMake编译gtest
从GitHub下载gtest源码。
从VS2019选择和创建CMake项目。
const in C++
C++中const可用于变量, 指针, 函数和类.
修饰变量const修饰的变量的值不能再修改, 编译器也可以对其进行数据静态类型检查. 所以用const声明的变量可以保证类型安全, 用以取代C中的宏定义.
const定义的常量在C中是全局的, 在C++中则视声明位置而定.
C++类型转换
当运算符的操作数具有不同的数据类型时, C++会自动将它们按照一定的规则转换为相同的数据类型. 理解这些规则将有助于程序员防止一些细微的错误蔓延到自己的程序中.
基本数据类型隐式转换简言之, 基本数据类型的隐式转换遵循的规则是基本数据类型的等级.
C++11智能指针
智能指针是使用RAII方法对普通指针进行的封装, 所以智能指针实质是对象, 行为表现是指针.
RAII, Resource Acquisition Is Initialization, 资源获取就是初始化. RAII是一种管理资源、避免泄漏的惯用法. 通常的做法是对于一个对象而言, 我们在构造函数的时候申请空间, 而在析构函数(在离开作用域时调用)的时候释放空间.
使用智能指针可以方便的管理堆内存,...
cout的格式化
STL cout的格式化收集整理如下, 以便查阅.
综述cout是STL库提供的一个iostream实例,拥有ios_base基类的全部函数和成员数据.进行格式化操作可以直接利用setf/unsetf函数和flags函数.
cout维护一个当前的格式状态, setf/unsetf函数是在当前的格式状态上追加或删除指定的格式,...
字节对齐
关于C++字节对齐收集整理如下, 以便查阅.
概念对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。