随笔分类 -  [002] C/C++

上一页 1 2 3 4 5 6 7 8 9 下一页
c++ placement new概念
摘要:参考:http://www.cnblogs.com/Clingingboy/archive/2013/04/26/3044910.html 转:http://bbs.chinaunix.net/thread-1015707-1-1.html 问题:什么是“定位放置new(placement new) 阅读全文
posted @ 2017-04-11 15:53 莫水千流 阅读(684) 评论(0) 推荐(0) 编辑
STL List::sort() 解析
摘要:看侯捷翻译那本《STL源码剖析》中list内置sort的算法,书中注释说是quick sort,看了半天没看明白, template <class T, class Alloc> template <class T, class Alloc> void list<T, Alloc>::sort() 阅读全文
posted @ 2017-04-06 08:57 莫水千流 阅读(1267) 评论(0) 推荐(0) 编辑
operator++()和operator++(int)的区别
摘要:很久以前(八十年代),没有办法区分++和--操作符的前缀与后缀调用。这个问题遭到程序员的报怨,于是C++语言得到了扩展,允许重载increment 和 decrement操作符的两种形式。 然而有一个句法上的问题,重载函数间的区别决定于它们的参数类型上的差异,但是不论是increment或decre 阅读全文
posted @ 2017-04-05 14:41 莫水千流 阅读(4045) 评论(0) 推荐(0) 编辑
do{...}while(0)的意义和用法
摘要:linux内核和其他一些开源的代码中,经常会遇到这样的代码: do{ ... }while(0) do{ ... }while(0) 这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢? 实际上,do{...}while(0)的作用远大于美化你的代码。查 阅读全文
posted @ 2017-04-01 11:19 莫水千流 阅读(335) 评论(0) 推荐(0) 编辑
c++ 中__declspec 的用法
摘要:语法说明:__declspec ( extended-decl-modifier-seq )扩展修饰符:1:align(#) 用__declspec(align(#))精确控制用户自定数据的对齐方式 ,#是对齐值。e.g__declspec(align(32)) struct Str1{int a, 阅读全文
posted @ 2017-03-29 11:36 莫水千流 阅读(3510) 评论(0) 推荐(1) 编辑
#pragma详细解释(一)
摘要:#pragma详细解释 #pragma详细解释(一) 2010-04-18 14:21:00| 分类: 默认分类 | 标签: |字号大中小订阅 在#Pragma是预处理指令它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++ 阅读全文
posted @ 2017-03-25 13:37 莫水千流 阅读(2335) 评论(0) 推荐(0) 编辑
memmove 和 memcpy的区别
摘要:memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下:void *memcpy(void *dst, const void *src, size_t count);void *memmove(void *dst, const 阅读全文
posted @ 2017-03-21 13:14 莫水千流 阅读(760) 评论(0) 推荐(0) 编辑
转载 C++实现的委托机制
摘要:转载 C++实现的委托机制 1.引言 下面的委托实现使用的MyGUI里面的委托实现,MyGUI是一款强大的GUI库,想理解更多的MyGUI信息,猛击这里http://mygui.info/ 最终的代码可以在这里下载:http://download.csdn.net/detail/gouki04/36 阅读全文
posted @ 2017-03-20 22:44 莫水千流 阅读(196) 评论(0) 推荐(0) 编辑
C++如何禁止掉对象的复制操作
摘要:最容易想到的是将拷贝构造函数与赋值函数声明为private。但是,private只是说外部不能直接调用,但是可以间接通过类的成员函数与友元函数对其访问。那么怎么办呢? 》在类中,允许声明函数,但是,可以不用实现该函数,这是合法的。那么即使是在public中声明函数,但是不实现,那么调用这个函数也是会 阅读全文
posted @ 2017-03-20 21:36 莫水千流 阅读(456) 评论(0) 推荐(0) 编辑
C++实现委托机制(二)
摘要:1.引言: 上一篇文章已经介绍了如何构建一个无参数无返回值的函数指针的委托,这篇文章将对上一文章所述委托进行扩展,使得可以注册任意函数指针,不过再讲篇内容之前先要介绍一下实现这个功能所需要了解的C++11的一个新特性———可变参数模板。 2.可变参数模板: template(模板)是源于将类型和实现 阅读全文
posted @ 2017-03-20 20:24 莫水千流 阅读(410) 评论(0) 推荐(0) 编辑
C++实现委托机制(一)
摘要:1.引言: 如果你接触过C#,你就会觉得C#中的delegate(委托)十分灵巧,它的用法上和C\C++的函数指针很像,但是却又比C\C++的函数指针更加灵活。并且委托可以一对多,也就是可以注册多个函数,甚至是某个类的非静态成员函数。而实现事件消息机制【1】也十分依赖于委托机制。基于这样的目的,我们 阅读全文
posted @ 2017-03-20 20:23 莫水千流 阅读(625) 评论(0) 推荐(0) 编辑
C++模板编程中只特化模板类的一个成员函数
摘要:模板编程中如果要特化或偏特化(局部特化)一个类模板,需要特化该类模板的所有成员函数。类模板中大多数成员函数的功能可能是一模一样的,特化时我们可能只需要重新实现1、2个成员函数即可。在这种情况下,如果全部重写该模板类的所有成员函数,不但会增加工作量,也不利于代码的维护。 例如下面的类模板A,只有在模板 阅读全文
posted @ 2017-03-19 18:41 莫水千流 阅读(6531) 评论(2) 推荐(0) 编辑
Aho-Corasick 多模式匹配算法、AC自动机详解
摘要:Aho-Corasick算法是多模式匹配中的经典算法,目前在实际应用中较多。 Aho-Corasick算法对应的数据结构是Aho-Corasick自动机,简称AC自动机。 搞编程的一般都应该知道自动机FA吧,具体细分为:确定性有限状态自动机(DFA)和非确定性有限状态自动机NFA。普通的自动机不能进 阅读全文
posted @ 2017-03-14 15:40 莫水千流 阅读(694) 评论(0) 推荐(0) 编辑
标准C++类std::string的内存共享和Copy-On-Write技术
摘要:标准C++类std::string的 内存共享和Copy-On-Write技术 陈皓 1、 概念 Scott Meyers在《More Effective C++》中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的 阅读全文
posted @ 2017-03-13 14:00 莫水千流 阅读(2116) 评论(0) 推荐(0) 编辑
string类的写时拷贝
摘要:由于浅拷贝使多个对象共用一块内存地址,调用析构函数时导致一块内存被多次释放,导致程序奔溃。 实现string类的时候通常显示的定义拷贝构造函数和运算符重载函数。 由于释放内存空间,开辟内存空间时花费时间,因此,在我们在不需要写,只是读的时候就可以不用新开辟内存空间,就用浅拷贝的方式创建对象,当我们需 阅读全文
posted @ 2017-03-13 13:48 莫水千流 阅读(495) 评论(0) 推荐(0) 编辑
C++ 引用计数技术及智能指针的简单实现
摘要:阅读目录 1.智能指针是什么 2.普通指针存在的问题 3.什么是引用计数 4.智能指针实现 4.1.基础对象类 4.2.辅助类 4.3.为基础对象类实现智能指针类 4.4.智能指针类的使用与测试 5.智能指针类的改进一 6.智能指针改进二 阅读目录 1.智能指针是什么 2.普通指针存在的问题 3.什 阅读全文
posted @ 2017-03-13 13:42 莫水千流 阅读(1249) 评论(0) 推荐(0) 编辑
标准C++类std::string的内存共享和Copy-On-Write(写时拷贝)
摘要:标准C++类std::string的内存共享,值得体会: 详见大牛:https://www.douban.com/group/topic/19621165/ 顾名思义,内存共享,就是两个乃至更多的对象,共同使用一块内存; 1.关于string的内存共享问题: 通常,string类中必有一个私有成员, 阅读全文
posted @ 2017-03-13 12:59 莫水千流 阅读(1051) 评论(0) 推荐(0) 编辑
C++中placement new操作符(经典)
摘要:placement new是重载operator new的一个标准、全局的版本,它不能被自定义的版本代替(不像普通的operator new和operator delete能够被替换成用户自定义的版本)。 它的原型如下: void *operator new( size_t, void *p ) t 阅读全文
posted @ 2017-03-10 13:51 莫水千流 阅读(465) 评论(0) 推荐(0) 编辑
名字修饰约定extern "C"与extern "C++"浅析
摘要:所谓名字修饰约定,就是指变量名、函数名等经过编译后重新输出名称的规则。 比如源代码中函数名称为int Func(int a,int b),经过编译后名称可能为?Func@@YAHHH@Z、?Func@@YGHHH@Z、_Func@8,也有可能与源代码中名称相同为Func。 影响编译后输出的名称通常与 阅读全文
posted @ 2017-02-25 12:41 莫水千流 阅读(420) 评论(0) 推荐(0) 编辑
C++构造函数和析构函数的调用顺序
摘要:1、构造函数的调用顺序 基类构造函数、对象成员构造函数、派生类本身的构造函数 2、析构函数的调用顺序 派生类本身的析构函数、对象成员析构函数、基类析构函数(与构造顺序正好相反) 3、特例 局部对象,在退出程序块时析构 静态对象,在定义所在文件结束时析构 全局对象,在程序结束时析构 继承对象,先析构派 阅读全文
posted @ 2017-02-21 09:35 莫水千流 阅读(2765) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 下一页