c++
CodingAsura
知其然,知其所以然
展开
-
函数对象、函数指针
函数对象不是函数指针。但是,在程序代码中,它的调用方式与函数指针一样,后面加个括号就可以了。 这是入门级的随笔,说的是函数对象的定义,使用,以及与函数指针,成员函数指针的关系。 沐枫小筑 函数对象实质上是一个实现了operator()--括号操作符--的类。 例如:class Add { public: int operator()(int a, int转载 2015-04-06 13:36:58 · 327 阅读 · 0 评论 -
大端法、小端法、网络字节序 转
大端法、小端法、网络字节序 转 一.概念、定义关于字节序(大端法、小端法)的定义《UNXI网络编程》定义:术语“小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。 也可以说: 1.小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放转载 2015-07-11 11:50:45 · 762 阅读 · 0 评论 -
P2P 之 UDP穿透NAT的原理与实现
P2P之UDP穿透NAT的原理与实现博客分类:P2PSocket网络协议Windows互联网软件测试 P2P 之 UDP穿透NAT的原理与实现原创:shootingstars参考:http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt工程下载地址:upload/2004_05/0405转载 2015-07-11 16:29:28 · 344 阅读 · 0 评论 -
关于C/C++运行期库
C运行时库函数是指C语言本省支持的一些基本函数,通常是汇编直接实现的 。 API函数是操作系统提供给用户方便设计应用程序的函数,实现一些特定的功能,API函数也是C语言的函数 实现的。 他们之间区别是:API函数是针对操作系统的,C语言运行时函数则是针对C语言本身的。 =========================================================== 1)转载 2015-07-03 15:36:48 · 346 阅读 · 0 评论 -
防止程序启动两次的方法CreateMutex()
防止程序启动两次的方法CreateMutex()分类: C++2013-07-30 14:00 1439人阅读 评论(1) 收藏 举报编程语言在工程文件中, WinMain函数里加上以下代码[cpp] view plaincopyHANDLE hMutex = CreateMutex(NULL, false, "Pro转载 2015-07-15 12:42:54 · 443 阅读 · 0 评论 -
创建一个动态链接库 (DLL),使用VS2010
在本演练中,您将创建一个动态链接库 (DLL),其中包含可供其他应用程序使用的有用例程。使用 DLL 是一种重用代码的绝佳方式。您不必在自己创建的每个程序中重新实现这些例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。本演练使用本机 C++。有关使用本机 C++ 创建静态库的演练,请参见 演练:创建和使用静态库。有关使用面向公共语言运行库的 Visual C++转载 2015-08-10 16:05:38 · 329 阅读 · 0 评论 -
C++析构函数为什么要为虚函数
C++析构函数为什么要为虚函数注:本文内容来源于zhice163博文,感谢作者的整理。1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址 http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html a.第一段代码转载 2015-09-09 16:08:51 · 256 阅读 · 0 评论 -
C++ 虚函数表解析
C++ 虚函数表解析陈皓http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,转载 2015-09-13 16:47:11 · 225 阅读 · 0 评论 -
从初始化列表和构造函数谈C++的初始化机制
http://blog.csdn.net/theprinceofelf/article/details/20057359 前段时间被人问及“初始化列表和构造有什么区别?”我竟一时语塞,只好回头拿起几本C++的大部头书,打开VS2012和vim开始倒腾。最后总结出如下几点,希望对大家理解C++能有些帮助。(题外话:我认为好的技术书籍和师者对人最大的帮助就是:帮助转载 2015-10-20 18:19:19 · 462 阅读 · 1 评论 -
深入分析Volatile的实现原理,原子操作
深入分析Volatile的实现原理引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上I转载 2015-09-16 23:10:59 · 639 阅读 · 0 评论 -
C++ 智能指针详解
C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_p转载 2015-10-21 23:27:26 · 295 阅读 · 0 评论 -
弱符号与强符号概念
弱符号与强符号概念弱符号与强符号概念链接过程实质上就是把不同目标文件粘在一起,对不同目标文件中定义或引用的相同名字进行决议resolve和绑定binding。符号的分类如下:定义在本目标文件中的全局符号,可以被其它文件引用。在本目标文件中引用的全局符号,却没有定义在本目标文件,这一般叫做外部符号(External Symbol), 也就是我们前所谓符号引用。段名,这种符转载 2015-10-09 16:40:36 · 556 阅读 · 0 评论 -
关于C++中的类型转换操作符
关于C++中的类型转换操作符博客分类:专业杂技 关于C++中的类型转换操作符 本文对四种标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast进行了介绍,通过本文应当能够理解这四个类型转换操作符的含义。内容简介: 有四种标准C++的类型转换符:static_cast、dyna转载 2015-09-21 22:19:18 · 514 阅读 · 0 评论 -
C++类对象创建过程
初看到这个题目,你可能会有些疑惑:C++类对象的创建还有什么好说的,不就是调用构造函数么?实际上情况并不是想象中的那么简单,大量的细节被隐藏或者被忽略了,而这些细节又是解决一些其他问题的关键,所以我们很有必要深入到这块"神秘"的区域,去探索鲜为人知的秘密。分配空间(Allocation)创建C++类对象的第一步就是为其分配内存空间。对于全局对象,静态对象以及分配在栈区域内的对象,对它们转载 2015-10-13 10:49:20 · 3722 阅读 · 0 评论 -
C++标准里 string和wstring
C++标准里 string和wstring分类: c++/stl2014-11-06 11:13 524人阅读 评论(0) 收藏 举报c++在C++标准里定义了两个字符串string和wstring typedef basic_string string; typedef basic_string wstring; 前者str转载 2015-06-10 18:13:28 · 6793 阅读 · 0 评论 -
std::function与std::bind 函数指针
std::function与std::bind 函数指针分类: cpp2013-01-22 20:37 26330人阅读 评论(5) 收藏 举报function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时。std::function可以绑定到全局函数/类静态成员函数(类静态成员函数与转载 2015-06-10 15:22:05 · 578 阅读 · 0 评论 -
Windows多线程
进程是系统中的重要概念,简单来说字面的意思就是一个运行中的程序,但是程序代表的是静态的指令代码。进程由系统管理的内核对象和存放程序运行资源的地址空间组成。内核对象由系统管理,因此应用程序是无法直接访问的;地址空间中则包含着程序运行所需的所有资源,如可执行模块、DLL、代码和数据,以及动态分配的栈与堆。可以说,其实进程就是程序运行的资源的容器。但是进程只是为程序的执行提供了一个场所,真正实现执行流程转载 2015-04-22 15:51:52 · 269 阅读 · 0 评论 -
C字符串和C++中string的区别
分类: VC++2013-04-09 13:00 1992人阅读 评论(0) 收藏 举报在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作。以下是C字符串和C++中string的区别:C字符串string对象(C++)所需的头文件名称 或转载 2015-04-06 21:30:37 · 466 阅读 · 0 评论 -
标准C++中的string类的用法总结
标准C++中的string类的用法总结相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C+转载 2015-04-06 21:03:46 · 230 阅读 · 0 评论 -
c++11 enum class
GCC 官方站点提供了很好的文档,这里非常好的解释了为什么要引入enum class这个强类型enum。任何希望精通C++的人,其实都应该认真的阅读C++的标准文档,而不是只看别人写的书,第一手资料,特别是标准文档永远都是不可替代的。然后才是其他的书籍帮助更深的理解这些标准。提供这个enum class的原因是因为旧的enum有不少缺点。简单描述一下:1. 容易被隐式转换成转载 2015-04-07 14:33:09 · 329 阅读 · 0 评论 -
结构体类型的指针的强制转换
结构体类型的指针的强制转换分类: Linux2013-10-24 20:58 2334人阅读 评论(0) 收藏 举报结构体和int等类型一样,都是数据类型。其他类型怎么转换,结构体就怎么转换,没有什么特殊的地方。楼主可能想知道的不是结构体怎样强制转换这个问题吧,猜测,楼主想知道如下几个问题:如果将一个结构体强制类型转换为另一个结构体(或者类型),那这个结构体的成员会转载 2015-04-20 12:56:17 · 1080 阅读 · 0 评论 -
cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
cin、cin.get()、cin.getline()、getline()、gets()等函数的用法2008-10-13 13:10:34标签:C++ C 职场 休闲学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息; 1、转载 2015-04-24 18:15:03 · 255 阅读 · 0 评论 -
函数后面加throw关键字
C++函数后面后加关键字throw(something)限制,是对这个函数的异常安全性作出限制。举例及解释如下:void fun() throw() 表示fun不允许抛出任何异常,即fun是异常安全的。void fun() throw(...) 表示fun可以抛出任何形式的异常。void fun() throw(exceptionType) 表示fun只能抛出exc转载 2015-05-09 10:35:57 · 410 阅读 · 0 评论 -
windows.h与winsock2.h的包含顺序
windows.h与winsock2.h的包含顺序大凡在Windows平台下用C++做网络开发很多时候都会同时包含这两个头文件,如若顺序不当(windows.h先于winsock2.h)就会出现很多莫名其妙的错误。诸如:警告 4 warning C4005: “AF_IPX”: 宏重定义 c:/program files/microsoft sdks/window转载 2015-05-09 11:11:55 · 1238 阅读 · 0 评论 -
C++ - C++ signal的使用
C++ - C++ signal的使用1. 头文件#include 2. 功能设置某一信号的对应动作3. 函数原型void (*signal(int signum,void(* handler)(int)))(int); 分解来看: typedef void (*sig_t) (int); sig_t signal(int sig,转载 2015-05-10 14:44:26 · 534 阅读 · 0 评论 -
extern "C"的用法解析
extern "C"的用法解析 http://blog.sina.com.cn/u/494a1ebc010004g5 C++中extern “C”含义深层探索 1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言转载 2015-05-06 11:12:31 · 255 阅读 · 0 评论 -
#ifndef 与 #program once 的区别
来自:http://blog.csdn.net/hkx1n/article/details/4313357为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef __SOMEFILE_H转载 2015-05-20 14:16:00 · 302 阅读 · 0 评论 -
C++内存管理
[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权转载 2015-05-15 12:22:25 · 592 阅读 · 0 评论 -
C++工程的文件组织
这篇文章题目叫“浅谈VC++工程的文件组织”,其实内容不光是文件组织了,内容还还很广,我很早就想写这么篇文章,一方面是总结这几年下来的经验,另一方面就是能和别人交流交流,为了不让读者在阅读中丧失兴趣,我将在文章中加入大量生动的例子,所以这篇文章内容很散,但知识本身就是一种离散的积累之后才形成关系的连贯,难道不是吗?此文的观点并不“权威”,只是我个人的观点,欢迎来信和留言,图共同进步。 1、转载 2015-05-15 12:26:05 · 2035 阅读 · 0 评论 -
C++11 标准新特性:Defaulted 和 Deleted 函数
C++11 标准新特性:Defaulted 和 Deleted 函数阿里云携手开源中国众包平台发布百万悬赏项目 » 本文转自:http://www.ibm.com/developerworks/cn/aix/library/1212_lufang_c11new/index.html简介: 本文将介绍 C+转载 2015-11-02 12:09:12 · 374 阅读 · 0 评论