
c&c++语言
echoisland
这个作者很懒,什么都没留下…
展开
-
标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast
(比如static_cast,相当于c里面的转换,dynamic_cast (父子之间转换),const_cast 去掉常量性.)关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行转载 2010-12-03 16:28:00 · 484 阅读 · 0 评论 -
自适应 sprintf源码
/#include "stdafx.h"#define INCLUDE_STRING#ifdef INCLUDE_STRING #include "string.h"#endif#ifdef KERNEL #define NOFLOAT#endif#define sprintf my_sprintf#define vsprintf my_vsprintf#define atoi my_atoi#define ftoa my_ftoa转载 2010-12-20 11:08:00 · 6316 阅读 · 1 评论 -
explicit关键字与拷贝构造及赋值
<br /><br />今天看到公司的代码内有大量的explicit关键字,但是老版的MSDN内例子并不完善,实在是不明白,最终从网上一篇文章内找到了答案:原来explicit是为了防止隐式使用拷贝构造函数的.以下附上从新版MSDN中找到的例子和网上那篇文章:<br />// Copy From MSDN<br />This keyword is a declaration specifier that can only be applied to in-class constructor declarat转载 2011-05-09 20:36:00 · 776 阅读 · 0 评论 -
关于#/##在宏定义中的用法
<br />关于#/##在宏定义中的用法 (2011-04-01 11:58)http://blog.chinaunix.net/space.php?uid=20792262&do=blog&id=201691分类: 算法与数据结构<br /> 第1篇<br />在C/C++的宏定义中,#/##存在特殊的作用1. #运算符将一个宏的参数转换为字符串字面量。它仅允许出现在带参数的宏的替换列表中。view plaincopy to clipboardprint?#include <cstdio> #def转载 2011-04-03 17:12:00 · 1299 阅读 · 0 评论 -
Thunk 技术的一个改进
转自:http://www.vckbase.com/document/viewdoc/?id=1817摘要:介绍了 thunk 技术中如何避免直接写机器码。关键字:Thunk 机器码 this指针 Thunk技术,一般认为是在程序中直接构造出可执行代码的技术(在正常情况下,这是编译器的任务)。《深度探索C++对象模型》中对这个词的来源有过考证(在中文版的162页),说thunk是knuth的倒拼字。knuth就是大名鼎鼎的计算机经典名著《The Art of Computer Programming》的转载 2011-05-25 21:54:00 · 690 阅读 · 0 评论 -
关于字符编码,你所需要知道的
关于字符编码,你所需要知道的 - Kevin Yang - 博客园转载 2011-06-01 13:13:00 · 645 阅读 · 0 评论 -
linux中使用pthread_kill函数测试线程是否存活
<br /><br />pthread_kill:<br />别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。<br />int pthread_kill(pthread_t thread, int sig);<br />向指定ID的线程发送sig信号,如果线程代码内不做处理,则按照信号默认的行为影响整个进程,也就是说,如果你给一个线程发送了SIGQU转载 2011-05-05 20:18:00 · 25828 阅读 · 0 评论 -
CountDownLatch同步辅助类
<br /><br />从名字可以看出,CountDownLatch是一个倒数计数的锁,<br />当倒数到0时触发事件,也就是开锁,其他人就可以进入了。<br />在一些应用场合中,需要等待某个条件达到要求后才能做后面的事情;同时当线程都完成后也会触发事件,以便进行后面的操作。<br /><br />CountDownLatch最重要的方法是countDown()和await(),前者主要是倒数一次,后者是等待倒数到0,如果没有到达0,就只有阻塞等待了。<br /> <br />下面的例子简单的说明了Co转载 2011-05-09 20:26:00 · 836 阅读 · 0 评论 -
进程线程及堆栈关系的总结
<br />进程线程及堆栈关系的总结<br />突然想到进程的栈和线程的栈,就顺便说一下,线程的栈被自动分配到进程的内存空间中<br />进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: <br /><br />简而言之,一个程序至少有一个进程,一个进程至少有一个线程. <br />线程的划分尺度小于进程,使得多线程程序的并发性高。 <br />另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。转载 2011-05-08 17:23:00 · 29954 阅读 · 4 评论