![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++杂技
weixin_38070782
这个作者很懒,什么都没留下…
展开
-
C++ 中delete空指针
今天写了一些代码给同事review的时候,同事指出我有一个地方对空指针指针的判断是不必要的。记录在此作为提醒。局部的代码是这样的这里matches是一个指针,很明显在下面的delete maches代码前面我去判断了matches是否为空,事实上这是不必要的,delete操作符已经对指针是否为空做过判断了(参见:C++ Primer第三版340页)。实际上g++中一个delete的实现是这样的:我们可以看到delete已经判断过指针是否为空了。——————————————...转载 2020-07-16 11:26:37 · 998 阅读 · 0 评论 -
【C++踩坑】说说g++的-fno-elide-constructors参数
https://blog.csdn.net/XiyouLinux_Kangyijie/article/details/78939291转载 2020-07-15 22:22:15 · 241 阅读 · 0 评论 -
C++类中使用前置声明和使用include包含头文件的感想
https://blog.csdn.net/jh1513/article/details/52674160转载 2020-07-14 22:27:25 · 95 阅读 · 0 评论 -
条件变量之虚假唤醒
https://blog.csdn.net/shizheng163/article/details/83661861原创 2020-07-13 23:59:45 · 650 阅读 · 0 评论 -
C++11中如何让自定义的类支持Range-Based for循环
http://www.banbeichadexiaojiubei.com/index.php/2019/11/12/c11%E4%B8%AD%E5%A6%82%E4%BD%95%E8%AE%A9%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E7%B1%BB%E6%94%AF%E6%8C%81range-based-for%E5%BE%AA%E7%8E%AF/原创 2020-07-13 21:55:10 · 1130 阅读 · 0 评论 -
C++ 匿名namespace的作用以及它与static的区别
https://my.oschina.net/jacobin/blog/373446转载 2020-07-04 23:59:18 · 152 阅读 · 1 评论 -
c++不完全类型检测
检查不完全类型:举例如下//BB.h#include <iostream> 2 class BB 3 { 4 public: 5 BB() 6 { 7 std::cout<<"BB"<<std::endl; 8 } 9 ~BB()10 {11 std::cout<<"~BB"<<std::endl;12 }13...转载 2020-06-17 14:32:36 · 425 阅读 · 0 评论 -
标准C++类string的Copy-On-Write技术(三)
2.3.4、Copy-On-Write的具体实现是怎么样的?最后的这个问题,我们主要解决的是那个“民主集中”的难题。请先看下面的代码:string h1 = “hello”;string h2= h1;string h3;h3 = h2;string w1 = “world”;string w2(“”);w2=w1;很明显,我们要让h1、h2、h3共享同一块内存,让w1、w2共享同一块内存。因为,在h1、h2、h3中,我们要维护一...转载 2020-06-14 14:43:02 · 92 阅读 · 0 评论 -
标准C++类string的Copy-On-Write技术(二)
2.2、深入在深入这前,通过上述的演示,我们应该知道在string类中,要实现写时才拷贝,需要解决两个问题,一个是内存共享,一个是Copy-On-Wirte,这两个主题会让我们产生许多疑问,还是让我们带着这样几个问题来学习吧:1、Copy-On-Write的原理是什么?2、string类在什么情况下才共享内存的?3、string类在什么情况下触发写时才拷贝(Copy-On-Write)?4、Copy-On-Write时,发生了什么?5、Copy-O...转载 2020-06-14 14:25:07 · 128 阅读 · 0 评论 -
标准C++类string的Copy-On-Write技术(一)
标准C++类std::string的内存共享和Copy-On-Write技术陈皓1、概念Scott Meyers在《More Effective C++》中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要检查你是否在复习时,你才真正捡起课本看书。这就是“拖延战术”,直到你非要做的时候...转载 2020-06-14 14:24:05 · 119 阅读 · 0 评论 -
C++中整型的超范围赋值问题
在C++的标准中,是规定了每一个算术类型的最小存储空间的,但是该标准并不阻止编译器来使用更大的存储空间,而且事实上也正好如此,对于C++的内置类型,几乎所有的编译器都使用了更大的存储空间来存储数据。---yyc在C++中可以理解对象的类型决定了对象的取值范围,但是当我们在C++中试着把一个超出其取值范围的值赋值给该整型对象时,并不会报错,而是编译器根据该类型是signed还是unsigned类型进行了一定的数据转换。一、对于unsigned类型,编译器会调整越界值使其满足要求,编译器会自动将转载 2020-06-14 10:37:19 · 871 阅读 · 0 评论 -
C++强制类型转换运算符(static_cast、reinterpret_cast、const_cast和dynamic_cast)
将类型名作为强制类型转换运算符的做法是C语言的老式做法,C++为保持兼容而予以保留。C++ 引入了四种功能不同的强制类型转换运算符以进行强制类型转换:static_cast、reinterpret_cast、const_cast 和 dynamic_cast。强制类型转换是有一定风险的,有的转换并不一定安全,如把整型数值转换成指针,把基类指针转换成派生类指针,把一种函数指针转换成另一种函数指针,把常量指针转换成非常量指针等。C++ 引入新的强制类型转换机制,主要是为了克服C语言强制类型转换的以下三个缺.转载 2020-06-13 23:02:35 · 102 阅读 · 0 评论