随笔分类 - C++
C++ const和constexpr
摘要:constexpr是c++11标准添加的关键字。 相同点: const和consexpr都是用来定义常量的。不同点: const声明的常量,初始值引用的对象不一定是一个常量; const 所定义的变量,一经初始化便不能修改,但是不要求const所定义变量在编译的时候就能被算出。 constexpr
阅读全文
C++ 中命名空间的 5 个常见用法
摘要:转自:https://my.oschina.net/u/3875054/blog/1834495?_from=gitee_rec 相信小伙伴们对C++已经非常熟悉,但是对命名空间经常使用到的地方还不是很明白,这篇文章就针对命名空间这一块做了一个叙述。 命名空间在1995年被引入到 c++ 标准中,通
阅读全文
Boost源码剖析之:型别分类器——type_traits
摘要:动机 1. 分派 下面有一个模板函数,假设一个动物收容组织提供了它,他们接受所有无家可归的可怜的小动物,于是他们向外界提供了一个函数接受注册。函数看起来像这样: template<class T> //T表示接受的是何种动物 void AcceptAnimals(T animal) { ... //
阅读全文
C++ static_cast、dynamic_cast、const_cast和reinterpret_cast(四种类型转换运算符)
摘要:隐式类型转换是安全的,显式类型转换是有风险的 为了使潜在风险更加细化,使问题追溯更加方便,使书写格式更加规范,C++ 对类型转换进行了分类,并新增了四个关键字来予以支持,它们分别是: 关键字说明 static_cast 用于良性转换,一般不会导致意外发生,风险很低。 const_cast 用于 co
阅读全文
C++11的enum class & enum struct和enum
摘要:C++标准文档——n2347(学习笔记)链接:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf 旧版enum存在的问题 1 问题1向整形的隐式转换 2 问题2无法指定底层所使用的数据类型 3 问题3enum的作用域 4
阅读全文
C++类的隐式类型转换运算符operator type()
摘要:在阅读<<C++标准库>>的时候,在for_each()章节遇到下面代码, 对于类中的operator double(){},第一次见到这个特别的函数,其实他是"隐式类型转换运算符",用于类型转换用的. 在需要做数据类型转换时,一般显式的写法是: 这种写法不能做到无缝转换,也就是直接写 i = d,
阅读全文
typeid().name()获取类型名
摘要:转:https://blog.csdn.net/TuxedoLinux/article/details/80604377 c++有种机制叫做RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基
阅读全文
C++可变参数模板
摘要:可变参数模板 原文链接: http://blog.csdn.net/xiaohu2022/article/details/69076281 https://www.cnblogs.com/qicosmos/p/4325949.html 普通模板只可以采取固定数量的模板参数。然而,有时候我们希望模板可
阅读全文
c++编程技巧
摘要:1、enum(枚举)没有枚举名 如果声明枚举类型时没有指定枚举名,其作用就和#define类似,比如以下代码: 这里声明了一个枚举类型确没有指定其枚举名,那么它就相当于用#define定义了六个名称和其对应的值,从0开始赋值每次加1,相当于: 只不过eunm类型表示的是一个确定的值,而这里#defi
阅读全文
C++模板(template)中typename
摘要:1、typename关键字 在声明template参数时, 前缀关键字class和typename可以互换,但在使用模板参数T的内部类型名称即嵌套从属名称时只能用typename。 在C++标准化的过程中,引入关键字typename是为了说明:模板类型参数内部的标识符(associated type
阅读全文
使用SWIG实现Python调用C/C++代码
摘要:转自:http://cering.github.io/2015/12/08/%E4%BD%BF%E7%94%A8SWIG%E5%AE%9E%E7%8E%B0Python%E8%B0%83%E7%94%A8C-C-%E4%BB%A3%E7%A0%81/ SWIG是个帮助使用C或者C++编写的软件能与其
阅读全文
Google开源命令行解析工具gflags
摘要:转自:https://blog.csdn.net/achelloworld/article/details/41959595# gflags是google开源的一套命令行参数解析工具,支持C++和Python语言,其使用方法; 1. 定义参数 使用gflags需要包含头文件#include <gfl
阅读全文
Eigen内存分配器aligned_allocator
摘要:在使用Eigen的时候,如果STL容器中的元素是Eigen数据库结构,比如下面用vector容器存储Eigen::Matrix4f类型或用map存储Eigen::Vector4f数据类型时: 这么使用编译能通过,当运行时会报段错误。 对eigen中的固定大小的类使用STL容器的时候,如果直接使用会出
阅读全文
boost库中的 program_options
摘要:1、阅读rviz中的源码时在rviz/visualizer_app.cpp中遇到如下代码: po::options_description options; options.add_options() ("help,h", "Produce this help message") ("splash-
阅读全文
c++中override和final
摘要:1、override保留字表示当前函数重写了基类的虚函数。目的:1.在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定义的);2.强制编译器检查某个函数是否重写基类虚函数,如果没有则报错。用法:在类的成员函数参数列表后面添加该关键字既可,被over
阅读全文
C++标准库笔记(一)
摘要:1、C++ STL中std::accumulate()、std::begin()和std::end() accumulate定义在#include<numeric>中,实现的功能为:(1)用来计算指定范围内的元素之和。(2)指定的二进制操作计算特定范围内的元素结果。分别由两个函数模板实现: temp
阅读全文