![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
文章平均质量分 92
C/C++基础
以及一些新的东西
ivy_0709
作者不懒哦,有文章被点赞了或关注了都会被作者重新编辑,进行优化补充,方便后人更好的理解和阅读。
文章中如果有写错、表述不明、有疑问或者需要扩展的知识,欢迎留言或者私信。
少点收藏文章,看完觉得有用再收藏。
展开
-
assert宏实现中的注意点
断言assert是由宏来实现的,debug下生效,release下不生效。当我们用这个宏的时候不会在意,其实细看他的实现还是蛮有意思的。这个实现里面涉及好多小技巧以及要避开的陷阱,cast-to-void,sizeof,大括号,do……while。本文第一部分先介绍了,assert实现之路,一版比一版完善。第二部分,第三部分则详细解释了为什么要这么实现的原因,中间列举了例子以及涉及到了编译器的...原创 2018-05-15 10:49:45 · 530 阅读 · 0 评论 -
STL中的traits技术
使用STL中的advance和迭代器类型来讲解trait技术1.迭代器类型熟悉的迭代器类型:输入、输出、前向、双向、随机。c++标准程序库分别提供专属的卷标结构(tag struct),一个空的结构体来标志具体是哪种类型迭代器,如下:// ITERATOR STUFF (from <iterator>)// ITERATOR TAGS (from...原创 2019-04-29 17:35:55 · 1286 阅读 · 0 评论 -
C++11的新特性
1.override修饰地方:继承的虚函数,表明这是重写的基类的虚函数。目的:为了让编译器辅助检查是否真正重写了继承的虚函数,而没有重写错了参数类型和个数,造成对基类同名函数的隐藏。推荐:在实际开发中,在重写继承而来的虚函数时,建议加上关键字override。错误示范:struct B3{virtual void g(int) {}};struct D3 : ...原创 2019-04-29 11:40:18 · 306 阅读 · 0 评论 -
std::bind小记
当std::bind函数(是一个函数模版),用来绑定函数的某些参数并生成一个新的std::function对象。如何来确定绑定的是函数的第几个参数,引入std::placeholders命名空间:_1,函数调用的第一个参数,_2第2个参数,_N第N个参数目录目录1.绑定普通函数没有占位符1个占位符2个占位符返回类型转换2.绑定类里面的成员静态函数...原创 2019-04-28 17:10:03 · 879 阅读 · 0 评论 -
std::function小记
在之前std::lambda表达式的例子3中,使用了一个变量来存储产生的匿名对象,当时使用的是auto:auto func =[](const std::string &str){ return "Iamlistening " + str; };这个auto推倒出来的类型其实就是std::function类型,如下:std::function<std::st...原创 2019-04-28 15:39:32 · 333 阅读 · 0 评论 -
函数对象小记
函数对象就是一个实现了operator()的类。正是因为实现了operator()操作符,所以在使用的时候,可以调用()操作符,看起来就像是对一个函数的调用,但是实际上这是一个对象。所以称之为函数对象。普通函数vs函数对象类 //普通函数void WhoMakesMeAngry(string name){ std::cout << name <...原创 2019-04-28 11:16:40 · 185 阅读 · 0 评论 -
std::lambda小记
目录不同形式的语法说明[ capture ]例子lambda是C++11中才引入的新特性,能定义匿名对象,而不必定义独立的函数和函数对象。在介绍函数对象的for_each例子中,如果不用创建函数对象,可以使用下面std::for_each(dest.begin(), dest.end(), [](int i){ std::cout << ' ' <<...原创 2019-04-28 12:09:16 · 679 阅读 · 0 评论 -
boost库的signals使用和sprintf,printf使用
signals的使用其实就是实现了观察者模式。两个关键词:signal和slots ——信号和插槽。信号其实就是Subject,插槽就是Observer给信号连接上插槽,然后信号一触发,插槽上的函数就一触即发。一个简单的使用signal和slots的例子:1.先定义一个函数对象HelloWorld(函数对象就是实现了operator()操作符的类)struc...原创 2019-04-26 16:53:37 · 400 阅读 · 0 评论 -
Lua嵌入C++
本来是想看下lua文件的编码格式的不同跟 C++中的多字节和单字节有没有关系。就想建立一个工程实验一下,发现没有关系。lua文件的编码方式应该只能是不带bom的utf8 或者 ansi,这跟lua的解释器有关系。 在这个过程中,记录一些可能有用的东西。第一部分先介绍了一种如何在C++工程中嵌入lua的方法,第二部分简单看了一下lua的源码,看了下lua堆栈的相关的内容。...原创 2018-11-27 20:14:36 · 2180 阅读 · 0 评论 -
C++中关于new和delete的使用
总结一下看的一篇文章为何new出的对象数组必须要用delete[]删除,而普通数组delete和delete[]都一样文章中验证了 对象数组 用 delete 删除不行(因为对象数组中还有记录一个元素大小的4个字节字段,delete函数内操作的内存中会有4个字节的偏移,导致数据混乱)但没有回答普通数组为什么可以用delete 删除。下面是一些总结1.当 new一个有析构函数的...原创 2019-04-29 18:04:24 · 1949 阅读 · 1 评论