C++
lichunhong000
这个作者很懒,什么都没留下…
展开
-
C++:const关键字的应用
终于搞明白了const的各种用法const 是 constant 的缩写,本意是不变的,不易改变的意思。在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。如果不想让编译器察觉...原创 2020-02-28 11:08:48 · 250 阅读 · 0 评论 -
c++成员变量初始化方法:声明时初始化、初始化列表、构造函数初始化
c++成员变量初始化方法:声明时初始化、初始化列表、构造函数初始化有人说在声明的时候初始化相当于在构造函数中初始化,其实不是的,成员变量初始化的顺序为:先进行声明时初始化,然后进行初始化列表初始化,最后进行构造函数初始化,如下代码:(另外初始化列表中初始化的顺序是和变量声明的顺序一样,而与列表中的顺序无关)1 #include "stdafx.h" 2 #include <iostre...原创 2020-02-28 10:12:53 · 8575 阅读 · 1 评论 -
C++ -- 跨平台编译工具cmake
编译与链接认识cmakecmake所需成分源文件、cmakelist 、cmake、make之间的联系g++未完待续…转载 2019-05-13 10:52:13 · 1080 阅读 · 0 评论 -
C++ -- 回调函数
什么是回调函数,为什么要使用回调函数函数的概念很好理解,就是把某个任务独立出来,封装在一起,然后给它取个名字,它可以有参数和返回值。那么,回调函数是个什么呢?它和函数到底有何异同?既然已经有了函数,为啥还非要生出个回调函数来?我觉得要真正理解一个概念,必须要先理解它存在的意义,也就是它为什么要存在,它能带来什么方便之处。首先,回调函数也是函数,就像白马也是马一样。它具有函数的所有特征,它可以...转载 2019-05-10 17:34:52 · 273 阅读 · 0 评论 -
C++ -- inline关键字
在.h文件中定义函数,一般要使用inline关键字,但是如果是类的成员函数,可以不用inline。模板函数的定义和声明要放在一个文件中,一般在.h文件中。使用函数能够避免将相同代码重写多次的麻烦,还能减少可执行程序的体积,但也会带来程序运行时间上的开销。函数调用在执行时,首先要在栈中为形参和局部变量分配存储空间,然后还要将实参的值复制给形参,接下来还要将函数的返回地址(该地址指明了函数执行结...转载 2019-05-10 14:14:43 · 299 阅读 · 0 评论 -
C++ 指针
普通指针智能指针std::shared_ptr<int> ptr_1 = make_shared<int>();std::shared_ptr<int> ptr_2 (ptr_1);指针 this原创 2019-05-10 11:55:31 · 63 阅读 · 0 评论 -
C++标准库 原子操作std::atomic
std::atomic对象的值的读取和写入可使用load和store实现。原创 2019-05-07 11:34:37 · 1013 阅读 · 0 评论 -
C++ --- 重载操作符(operator)
C++的重载操作符(operator)介绍1 简介operator 是C++的一个关键字,它和运算符(如=)一起使用,表示一个运算符重载函数,在理解时可将operator和运算符(如operator=)视为一个函数名。使用operator重载运算符,是C++扩展运算符功能的方法。使用operator扩展运算符功能的原因如下:使重载后的运算符的使用方法与重载前一致扩展运算符的功能只能通过...原创 2019-05-07 10:24:01 · 142 阅读 · 0 评论 -
C++11 特性--lambda、std::function和std::bind
lambda -----------可调用对象包装器std::function -----------可调用对象包装器std::function是一个类模板,可以容纳除了类成员(函数)指针之外的所有可调用对象。可调用对象有一下几种定义:是一个函数指针,参考 C++ 函数指针和函数类型;是一个具有operator()成员函数的类的对象;可被转换成函数指针的类对象;一个...原创 2019-05-06 19:20:16 · 799 阅读 · 0 评论 -
C++ -- 常见预定义宏的使用
在标准C以及各中编译器中定义了一些对象宏, 这些宏的名称以"__"开头和结尾, 并且都是大写字符. 这些预定义宏可以被#undef, 也可以被重定义。在ANSI C标准中定义了__FILE__,LINE,DATA,TIME,__STDC__等标准的预定义宏。GCC对其进行扩展,也定义了多个预定义宏。概括起来GCC中可使用的预定义宏涵盖了如下几方面的信息:1、宿主的信息:GNU的版本,编译器的...转载 2019-05-13 20:16:31 · 519 阅读 · 0 评论 -
C++中static_cast和dynamic_cast强制类型转换
在C++标准中,提供了关于类型层次转换中的两个关键字static_cast和dynamic_cast。一、static_cast关键字(编译时类型检查)用法:static_cast < type-id > ( expression ),该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性,它主要有如下几种用法:(1)用于基本数据类型之间的...转载 2019-05-31 11:06:07 · 464 阅读 · 0 评论 -
C++ explicit关键字详解
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明, 即...转载 2019-06-03 19:13:20 · 173 阅读 · 0 评论 -
C++ explicit
C++ explicitexplicit关键字,通常用来修饰构造函数,防止隐式转换的发生。在C++中,我们有时可以将构造函数用作自动类型转换函数。但这种自动特性并非总是合乎要求的,有时会导致意外的类型转换,因此,C++新增了关键字explicit,用于关闭这种自动特性。即被explicit关键字修饰的类构造函数,不能进行自动地隐式类型转换,只能显式地进行类型转换。注意:只有一个参数的构造函数...原创 2019-09-04 15:28:38 · 166 阅读 · 0 评论 -
析构函数 private或delete
类中“私有”权限的含义就是:私有成员只能在类域内被访问,不能在类域外进行访问。把析构函数定义为私有的,就阻止了用户在类域外对析构函数的使用。这表现在如下两个方面:禁止用户对此类型的变量进行定义,即禁止在栈内存空间内创建此类型的对象。要创建对象,只能用 new 在堆上进行。禁止用户在程序中使用 delete 删除此类型对象。对象的删除只能在类内实现,也就是说只有类的实现者才有可能实现对对象...原创 2019-09-04 15:12:03 · 594 阅读 · 0 评论 -
找不到so库问题:bin/ld:can not find -llib ; No rule to make target; libxxx.so, needed by .., not found
找不到so库问题bin/ld:can not find -llibNo rule to make targetlibxxx.so, needed by …, not found (try using -rpath or -rpath-link)后面通常紧跟一堆 undefined reference to[ 39%] Linking CXX executable ../../../....原创 2019-08-15 14:15:41 · 1754 阅读 · 0 评论 -
so库工具及lib.so 、lib.so.1、 lib.so.1.07三者的联系
warning: libgtk-3.so.0, needed by …/…/lib/libopencv_highgui.so.3.3.1, not found (try using -rpath or -rpath-link)ld -lxxx --verboseThis question is not specific to Solaris.When you install a shar...原创 2019-08-13 19:34:09 · 4631 阅读 · 0 评论 -
c++ : assert() 宏作用
程序一般分为Debug 版本和Release 版本,Debug 版本用于内部调试,Release 版本发行给用户使用。断言assert 是仅在Debug 版本起作用的宏,它用于检查“不应该”发生的情况。在运行过程中,如果assert 的参数为假,那么程序就会中止(一般地还会出现提示对话,说明在什么地方引发了assert)。https://www.cnblogs.com/daochong/p/65...转载 2019-07-04 12:05:40 · 306 阅读 · 0 评论 -
.hpp报multiple definition重定义错误
I build up a c++ library of couple hpp files and they define some classes. I have other projects to include this library for inheriting those perdefined classes. In those child-projects, it works wel...原创 2019-06-24 18:02:16 · 3231 阅读 · 3 评论 -
c++ 之 std::move 原理实现与用法总结
在C++11中,标准库在中提供了一个有用的函数std::move,std::move并不能移动任何东西,它唯一的功能是将一个左值强制转化为右值引用,继而可以通过右值引用使用该值,以用于移动语义。从实现上讲,std::move基本等同于一个类型转换:static_cast<T&&>(lvalue);std::move函数可以以非常简单的方式将左值引用转换为右值引用。(左...转载 2019-06-24 10:50:58 · 2128 阅读 · 1 评论 -
GCC版本问题:编译找不到 math.h stdlib.h: fatal error: stdlib.h: No such file or director
cmake编译时报错: 找不到头文件math.h stdlib.hfatal error: stdlib.h: No such file or directoryfatal error: math.h: No such file or directoryIn file included from /usr/local/include/c++/6.2.0/bits/stl_algo.h:59...原创 2019-06-04 11:03:42 · 29134 阅读 · 3 评论 -
架构不一致或无法链接库出错:/usr/bin/ld: cannot find -lxx问题
库架构不一致引起/usr/bin/ld: cannot find -lxx问题2017年10月21日 11:22:46 小牛蛋 阅读数:480在Linux嵌入式平台上开发程序,除了网上能查到的库文件路径问题和/etc/ld.so.conf配置文件或/etc/ld.so.conf.d/目录下conf,再ldconfig等问题外,还有一种可能是目标so和当前可用的so架构不一致,比如armv7或者...原创 2019-04-25 18:01:45 · 776 阅读 · 0 评论 -
so库调用异常:Linux: C++ lookup error – undefined symbol
编译生成动态链接库后,调用时出现:# lichunhong @ lichunhong-ThinkPad-T470p in ~/Documents/src/effective_robotics_programming_with_ros-master/catkin_ws on git:lichunhong/dev x [18:54:05] C:127$ rosrun path_plan PathP...原创 2019-04-25 19:26:04 · 3944 阅读 · 3 评论 -
C++容器效率
vetordequelist原创 2019-04-04 10:25:04 · 799 阅读 · 0 评论 -
解决undefined reference to 构造函数/析构函数
构造函数、析构函数没有实现undefined reference to 构造函数/析构函数转载 2018-08-13 19:40:30 · 10639 阅读 · 7 评论 -
教你如何正确配置CMakeList
教你如何正确配置CMakeListhttps://blog.csdn.net/qq_33179208/article/details/53558744原创 2018-08-13 19:35:40 · 2109 阅读 · 0 评论 -
Ubuntu 16.04 下使用CMake编译的第一个OpenCV程序
Ubuntu 16.04 下使用CMake编译的第一个OpenCV程序https://blog.csdn.net/u012424737/article/details/80524278转载 2018-08-13 19:05:01 · 738 阅读 · 1 评论 -
C++继承中重载、重写、重定义的区别:
https://www.cnblogs.com/weizhixiang/articles/5760286.html转载 2018-08-13 15:05:58 · 152 阅读 · 0 评论 -
C++继承之子类的构造函数
https://blog.csdn.net/xckkcxxck/article/details/70045218转载 2018-08-13 15:05:18 · 1342 阅读 · 0 评论 -
C/C++ 获取目录下的文件列表信息
C/C++ 获取目录下的文件列表信息https://www.cnblogs.com/xudong-bupt/p/3566574.html转载 2018-08-14 12:30:01 · 903 阅读 · 0 评论 -
创建动态库xxx.so的方法
名词解释静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。动态函数库 这类库的名字一般是libxxx.so;相对于静态函数库,动...原创 2018-08-14 09:41:18 · 1031 阅读 · 0 评论 -
C++ explicit关键字详解
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明,...转载 2018-08-12 10:12:13 · 77 阅读 · 0 评论 -
C++ explicit关键字详解
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明,...转载 2018-08-21 22:38:13 · 84 阅读 · 0 评论 -
C++设计模式
Subject: C++设计模式https://blog.csdn.net/liang19890820/article/details/66974516https://segmentfault.com/a/1190000010706695https://www.zhihu.com/question/37391884https://www.amazon.cn/dp/B0012NMEXU/re...转载 2018-09-25 13:24:42 · 104 阅读 · 0 评论 -
C\C++中 fopen中文件打开方式的区别
https://www.cnblogs.com/cyyljw/p/7699374.html转载 2018-09-25 18:50:17 · 568 阅读 · 0 评论 -
C++ vector和list的区别
1.vector数据结构vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。另外,当数组中内存空间不够时,会重新申请一块内存空间并进行内存拷贝。2.list数据结构list是由双向链表实现的,因此内存空间是不连续的。只能通过指针访...转载 2019-02-25 10:44:06 · 186 阅读 · 0 评论 -
C++ 11 Lambda表达式
https://www.cnblogs.com/DswCnblog/p/5629165.htmlC++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能,如C#,Python等。今天,我们就来简单介绍...转载 2018-09-30 15:29:11 · 172 阅读 · 0 评论 -
危险!分离头指针
危险!分离头指针https://www.jianshu.com/p/91a0f8feb45d转载 2018-09-28 14:20:01 · 664 阅读 · 0 评论 -
c++之 map的使用
C++使用: C++中map的基本操作和用法https://www.cnblogs.com/empty16/p/6395813.html转载 2018-09-26 16:02:49 · 447 阅读 · 0 评论 -
c++ 模板编程
C++模板类代码只能写在头文件?https://blog.csdn.net/jinzeyu_cn/article/details/45795923C++模板全特化、偏特化https://blog.csdn.net/m_buddy/article/details/72973207转载 2018-09-26 16:00:55 · 154 阅读 · 0 评论 -
静态map成员 c++ 初始化
静态map成员 c++ 初始化转载 2018-09-25 20:23:39 · 1663 阅读 · 0 评论