Welcome 微信登录

首页 / 软件开发 / C++

不要把auto_ptr放入容器

不要把auto_ptr放入容器

不要把auto_ptr放入容器2010-07-22winter本来没有打算自己翻译Effective STL的,怕影响大家情绪:),只是发现有些条款在网络上找不到,只好自己翻译了。--Winter坦白的讲,这个条款不应加入本书,因为包含atuo_ptr的容器(COAPs)本来在STL中就是禁止的。就算你这么用了,编译器也不会编译你的代码。而标准委员会也没有解释为什么不能这样。对于COAPs我应该什么都不用说的,因为你的编译器应该替你做好了一切工作,所有这种...
在不装AD的情况下管理SPS的访问群体

在不装AD的情况下管理SPS的访问群体

在不装AD的情况下管理SPS的访问群体2010-07-22第一步、新建本地用户在管理->本地用户和组->用户里面添加新用户,譬如叫做newuser,注意要把描述给写好,省得以后忘记这用户属于哪个部门;第二步、把本地用户添加到SPS用户列表里面去在SPS的网站设置->用户管理里面把这新建的newuser添加进去,选择用户的时候直接打newuser就可以了,注意如果希望把用户添加到访问群体里面,就不能把该用户定义为读者;第三步、新建SPS的访...
用auto_ptr类模板帮助动态内存管理

用auto_ptr类模板帮助动态内存管理

用auto_ptr类模板帮助动态内存管理2010-07-22赵湘宁动态内存使用最多的是在C++应用程序的代码中。有过编程经验的程序员虽然都知道new操作符的使用一定要与delete匹配,在某些场合仍然可能有内存溢出。当异常被掷出时,程序的正常控制流程被改变,因此导致潜在的内存溢出。例如,void g() //可能掷出{ if (some_condition == false) throw X();}void func(){ string * pst...
把其它程序(如网页等)的文字拖放到Memo里

把其它程序(如网页等)的文字拖放到Memo里

把其它程序(如网页等)的文字拖放到Memo里2010-07-22需要用 COM 接口的 OLE 拖放目标, 程序新建一个支持拖放目标的UnitTMyDropTarget 单元, 在这个单元里创建一个 TMyDropTarget 类。这个程序可以使从写字板或者网页等定义的文本块用鼠标拖动, 放到程序的 Memo 里, 插入到 Memo 的拖放的位置。首先看看如何使用这个 TMyDropTarget 类:在 Form 的头文件里 (例如 Unit1.h) 需要...
详细解说STL排序(Sort)

详细解说STL排序(Sort)

详细解说STL排序(Sort)2010-07-22Winter0 前言: STL,为什么你必须掌握对于程序员来说,数据结构是必修的一门课。从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来。幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思去考虑其算法原理,也不用再去验证其准确性。不过,等你开始应用计算机语言来工作的时候,你会发现,面对不同的需求你需要一次又一次去用代码重复实现这些已经成熟的算法,而...
C++ Builder多线程编程中一些体会

C++ Builder多线程编程中一些体会

C++ Builder多线程编程中一些体会2010-07-22最近在写一个程序用到了多线程,所以对CB下的多线程有一定的学习。现在把自己的一些心得讲一下。水平有限,写的很粗略,请大家见谅。CB相对于VC来说,在CB下写多线程程序是很简单的。不仅是VCL中有TThread这个类。封装了那些关于多线程的WINDOW API。我觉得更方便的是他提供了直接访问主VCL线程中对象的能力。可以很容易的和主线程中的窗体,控件打交道。和单线程的方式没有太多区别。只是在有多...
C++0x概览:多线程(1)

C++0x概览:多线程(1)

C++0x概览:多线程(1)2010-07-22 vckbase yqever++ 0x 标准将增加对多线程的支持。以后所有的编译器都必须遵循新标准中对多线程的规定,这将会给不同平台上程序的移植带来很大的方便。让我们先来看看std::thread类,它负责管理线程的执行过程。启动线程我们创建一个std::thread类的实例来启动一个新线程,用一个线程函数作为构造函数的参数。如void do_work();std::thread t(do_work);st...
C++0x概览:多线程(3)

C++0x概览:多线程(3)

C++0x概览:多线程(3)2010-07-22 vckbase yqever在初始化时保护数据如果你的数据需要在初始化时被保护,就不能再使用mutex了。因为在初始化结束后,这会引起不必要的同步。C++0x提供了很多方法来在初始化时保护数据。1)假定你的构造函数是用constexpr关键字声明并且满足常量初始化的条件。在这种情况下,一个静态存储区的对象在静态初始阶段会确保在其他代码运行之前被初始化。对于std::mutex来说,这是最佳选择,因为它消除了...
C++编程杂谈之一:编译器

C++编程杂谈之一:编译器

C++编程杂谈之一:编译器2010-07-22xulion网上有很多各种编译器的优劣比较的东西,我写这些东西并不是想支持或否定某些东西,因为我始终认为在编程的领域中,我只是一个初学者,并没有资格来评判什么(况且我也不想去评判),我只是想讲述一下个人学习道路上的感受。学编程的一个必备的条件是你要有一个实践的平台--一个相应的编译器,没有这个条件,一切都是空谈。选择编译器之前,首先选择的是语言(这个我想不必更多的解释了),这里我假设你选择了C或C++。现在最流...
C++编程杂谈之二:面向对象

C++编程杂谈之二:面向对象

C++编程杂谈之二:面向对象2010-07-22xulion软件开发是一个极其复杂的过程,一段小的代码我们可以快速、准确的完成,但是当你面对的是一个庞大的软件系统的时候,你是否有不知所措的感觉呢?在我们使用C的年代里面,编程思想是结构化的,你的C语言老师可能会不断的教导你怎样使用结构化的方法来完成一段程序,同时,你可能也知道在软件开发中的一个重要定律(Wirth定律):程序 = 算法 + 数据结构在结构化设计中人们通常是这样来看待这个定律的:程序 =(算法...
C++编程杂谈之三:面向对象(续)

C++编程杂谈之三:面向对象(续)

C++编程杂谈之三:面向对象(续)2010-07-22xulion上一篇我们涉及了面向对象的一个基本概念--封装,封装是一个相对比较简单的概念,也很容易接受,但是很多的场合下面,仅仅是封装并不能很好的解决很多问题,考虑下面的例子:假设我们需要设计一个对战游戏的战斗细节,在最初的版本中我们将支持一种动作--fight。假设我们有三种角色:fighter、knight和warrior,每种角色的health、hit point不同,基于封装的基本想法,我们很自...
C++编程杂谈之四:漫谈UML

C++编程杂谈之四:漫谈UML

C++编程杂谈之四:漫谈UML2010-07-22xulionUML对很多人来说应该不是一个陌生的概念,这一两年来,UML被大家越来越多的讨论着。本来UML跟我这个主题似乎并不能扯上多大的关系(它是语言无关的,甚至可以说其本身就是一种语言——用于交流的)。我在此谈到它有两个目的:1.UML是针对面向对象软件开发的,而C++正是这样的一种语言2.UML在设计中被越来越多的使用着,而下一篇杂谈准备讨论设计模式,如果不了解UML,那么无法...
Boost中应用的泛型编程技术

Boost中应用的泛型编程技术

Boost中应用的泛型编程技术2010-08-19David Abrahams1、何谓泛型编程泛型编程(Generic Programming)关注于产生通用的软 件组件,让这些组件在不同的应用场合都能很容易地重用。在C++中,类模板和函 数模板是进行泛型编程极为有效的机制。有了这两大利器,我们在实现泛型化的 同时,并不需要付出效率的代价。作为泛型编程的一个简单例子,让我们 看一下在C库中如何让memcpy()函数泛型化。一种实现方法可能是这样的:void...
解析动态联编(上篇)

解析动态联编(上篇)

解析动态联编(上篇)2010-08-19tingya文章摘要多态性是C++最主要的特征,多态性的实现得益于C++中的动 态联编技术。文章通过对动态联编的关键技术虚拟函数表进行深入的剖析,解析 的动态联编的过程极其技术要领。关键字多态性 动态联编 VTABLE 虚函数文章正文一 从多态性谈动态联编的必要性在进入主题之前先介绍一下联编的概念。联编就是将模块或者函数合并在一起生 成可 执行代码的处理过程,同时对每个模块或者函数调用分配内存地址,并且对 外部访问也...
解析动态联编(下篇)

解析动态联编(下篇)

解析动态联编(下篇)2010-08-19tingya三 虚函数表VTABLE动态联编过程跟我们猜测的大致相同。编译器在执 行过程中遇到virtual关键字的时候,将自动安装动态联编需要的机制,首先为这 些包含virtual函数的类(注意不是类的实例)--即使是祖先类包含虚函数而本身 没有--建立一张虚拟函数表VTABLE。在这些虚拟函数表中,编译器将依次按照函 数声明次序放置类的特定虚函数的地址。同时在每个带有虚函数的类中放置一个 称之为vpointer的...
如何简单实现可执行文件的自我删除

如何简单实现可执行文件的自我删除

如何简单实现可执行文件的自我删除2010-08-19zyq654321可执行文件即 EXE 文件在运行过程中,由系统管理其打开的句柄。此时对该 文件的一些操作是被系统禁止的,比如删除操作。然而在某些场合,可能须要程 序有自我删除的功能,也就是程序运行结束后删除自身。基于这个想法,可以有 一种很简单的方法来实现这个基本功能。本方法基于两点来实现删除功能。一是利用 windows 的 command program 的 删除文件操作;再者就是启动新的进程来执行...
<< 121 122 123 124 125 126 127 128 129 130 >>