Welcome 微信登录

首页 / 软件开发 / C++

C++语言设计可扩展线程池

C++语言设计可扩展线程池

C++语言设计可扩展线程池2011-04-28在各种业务解决方案的设计过程中,服务器处理任务的效率往往决定了方案的成败。多线程处理任务是提高服务器效率的主要手段,它提高了对服务器资源的利用,使得任务可以并发处理。但如果服务器处理的任务的特点是轻量级、频率高,那么线程的创建与销毁会非常频繁,而系统用于处理线程的创建与销毁的开销会占相当大的比重,反而降低了系统的效率。通过线程池技术,可以减少频繁的线程的创建与销毁对系统性能的影响。线程池是预先创建线程的一种技术...
VC++中的一个不足及其改善方法

VC++中的一个不足及其改善方法

VC++中的一个不足及其改善方法2011-04-28 上海七○四研究所 梁柏林使用C语言编程序,有时需要把一种数值(如float类型的数值)转换成另一种类型(如int类型)的数值使用,这时,我们就要用到类型强制转换运算符,如(int)、(float)等。但是在VC++中,当把一个float类型的数值转换成int类型时,有时会出现比较大的误差。我在工作过程中就碰到过,当我把一个值为1140.00的float型变量ftemp使用如下方法转换成int类型,ite...
C++实现自动为对象添加“属性”访问代码

C++实现自动为对象添加“属性”访问代码

C++实现自动为对象添加“属性”访问代码2011-04-28对于c#而言,一个类可以有成员变量、成员函数、和属性,然而在C++中却没有“属 性”这一概念。为了达到相同的效果,在C++中一般是采用get_XXX()和set_XXX()两个 函数来实现外部对成员变量的访问。这样做的弊端很明显,类的声明中多了很多冗余的代码 :private:int m_data;public:int get_data() const;int set_da...
C++类型转换运算符的使用方法

C++类型转换运算符的使用方法

C++类型转换运算符的使用方法2011-04-28 本站整理 C++提供了四个新的类型转换运算符:const_castdynamic_castreinterpret_caststatic_cast使用方法:cast_operator <type> (object)类型转换操作符 要转换的类型 要进行转换的对象①dynamic_cast 将一个基类引用或指针转换位一个派生类应用或指针,或者将一个派生类引用或指针转换为一个基类引用或指针。例:...
C/C++中 malloc和new区别

C/C++中 malloc和new区别

C/C++中 malloc和new区别2011-05-311,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于mal...
C++的四个显式的数据类型转换函数

C++的四个显式的数据类型转换函数

C++的四个显式的数据类型转换函数2011-05-311 reinterpret_cast(在编译期间实现转换)reinterpret_cast类型转换函数将一个类型的指针转换成另一个类型的指针。这种转换不用于修改指针变量值数据存放的格式(不改变指针变量值),只需在编译期间重新解释指针的类型就可以做到。reinterpret_cast可以将指针值转换为一个整型数。但是不能用于非指针类型的转换,否则将不会通过编译。什么时候使用reinterpret_cast...
明确C++中引用的本质

明确C++中引用的本质

明确C++中引用的本质2011-05-31 新浪blog 德明泰一般的教材上讲到引用时,都是说“引用是对象的一个别名”。 我认为这种定义是不清晰的,不利于初学者理解引用。至少我自己曾经被这个定 义困扰了一段时间。到底什么是“别名”?实际上,引用的实质是位于xxxxxx地址上的一个xxxx类型的对象。比如教科 书上常用的例子:int a = 5; //不妨假设编译器将a分配到0x400000int &b...
C++惯用法之RAII

C++惯用法之RAII

C++惯用法之RAII2011-05-31C++号称是多范式的通用编程语言,但是RAII实际上已在C++编程技术中变成 不可或缺的核心技术。RAII几乎无处不在的身影不仅仅来自于C++之父的大力提 倡,更来自于这一技术本身的简单,高效和几乎无所不能的适应面。如 果您还没有听说过RAII的话,那么我在这里再重新叙述一遍,RAII是下列英文短 语的首字母缩写:Resource Acquisition Is Initialisation这 句话直译为中文的意思是...
C++中的名字查找问题解答

C++中的名字查找问题解答

C++中的名字查找问题解答2011-05-31朋友最近发邮件问我两个问题。内容如下(为了更适合阅读,我做了简单修改。译者在此基础上又做了修改):我在C++的多继承上遇到了很大麻烦。如图1,A、B1和B2为纯抽象类;C从B1、B2多继承,且实现了全部父类的抽象方法。图1现在:C* p = new C;p->Method_of_A(); //从B1、B2都能得到被调用方法,为什么编译器不报“二义性”(ambiguity)错误呢?而...
C++中内联函数的定义和使用

C++中内联函数的定义和使用

C++中内联函数的定义和使用2011-05-31引入内联函数的目的是为了解决程序中函数调用的效率问题。函数是一种更高级的抽象。它的引入使得编程者只关心函数的功能和使用方 法,而不必关心函数功能的具体实现;函数的引入可以减少程序的目标代码,实 现程序代码和数据的共享。但是,函数调用也会带来降低效率的问题,因为调用 函数实际上将程序执行顺序转移到函数所存放在内存中某个地址,将函数的程序 内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去前 要...
Linux下c++编译器Code::Blocks安装

Linux下c++编译器Code::Blocks安装

Linux下c++编译器Code::Blocks安装2011-05-31最近想写写C 、C++方面的程序,所以想找一个Linux下的编辑器来用用, 找了很多也试了不少,最后锁定了CodeBlocks.以下是关于他的介绍和一些安装 过程。适用所有的Linux吧。(有时就只是需要一个安装的思路,其它的都差不 多一样的)(摘抄)Code::Blocks,有时也简单打成 “CodeBlocks”,是一款全新的C++集成设置环境软件(IDE)...
C++技巧之二维动态数组类模板

C++技巧之二维动态数组类模板

C++技巧之二维动态数组类模板2011-05-31C++提供了许多强大的机制来实现代码的高度复用、来使我们使用我们自已的类就像使用内置类型那样方便快捷。比如模板,运算符重载等等。模板好比如是一个大批量生产函数和类的工厂,使我们不用再去关心与数据类型相关的繁琐编程细节,把我们精力留给那些真正值得我们去认真思考的地方。而运算符重载则使我们的程序更直观更简洁,这不仅使我们更容易读懂我们的程序,而且使我们能以一种更为流畅的方式来表达我们的想法。就像上篇文章说到的,...
c++通道应用(服务器篇)

c++通道应用(服务器篇)

c++通道应用(服务器篇)2011-05-31 网易博客 灵风【C++程序中命名管道通讯的实现】最近学习c++中,试手过程选择实 现一个程序与被注入程序互通的工具,感觉如果是计算机本地的通讯使用socket 似乎有些不太理性,俗话说“杀鸡焉牛宰牛刀”,所以使用伟大的 google找到了更适合轻量级程序通讯的内容,即下面所要说的:“管道 ”。首先按照国际管理,介绍下c++实现“管道” 的...
C/C++字符串处理盘点:Char*/String/StringBuilder/TextPool/Rope

C/C++字符串处理盘点:Char*/String/StringBuilder/TextPool/Rope

C/C++字符串处理盘点:Char*/String/StringBuilder/TextPool/Rope2011-05-31 csdn博客 许式伟概要在介绍StdExt的时候,我曾经提到,STL设计精良,但是以下几块仍然设计不 足(或缺失):allocator(内存管理)string(字符串处理/文本处理)parallel programming(并行编程)关于内存管理,我们已经说得很多了。这里我们重点谈的是字符串处理/文本 处理相关的问题。本篇是《字符...
<< 131 132 133 134 135 136 137 138 139 140 >>