C++
文章平均质量分 70
傻人一个
-
展开
-
Smart Pointers 智能指针(一)
有时候,我们需要扩展C++来支持一些特性。 听说过智能指针,但是一直不清楚具体的实现和用途。今天书上看到一点。Smart Pointer其实是一个类,模仿built-in pointer的行为,同时提供built-in pointer类型所不支持的一些功能,比如:自动销毁动态创建的对象(类似java的垃圾回收)。 先看一个简单的例子。(《C++ Common Knowle原创 2007-10-28 20:03:00 · 682 阅读 · 0 评论 -
深拷贝和浅拷贝(整理)
按钱能里说的: 如果一个类AA的针类成员*P用new命令分配了资源R,那么如果使用默认拷贝(浅拷贝),拷贝来的新类AAN中的那个指针类成员(AAN的)*P所指向的资源就是R。 所以要自己写拷贝函数,在拷贝时为AAN的*P分配一个大小与R一样的资源RN,然后在把R的内容全搬到RN中。 深拷贝和浅拷贝的定义可以简单理解成:如果一个类拥有资源(堆,或者是其它系统资源),转载 2007-11-06 02:37:00 · 884 阅读 · 0 评论 -
C++箴言:绝不在构造或析构期调用虚函数(转)
你不应该在构造或析构期间调用虚函数,因为这样的调用不会如你想象那样工作,而且它们做的事情保证会让你很郁闷。如果你转为 Java 或 C# 程序员,也请你密切关注本文,因为在 C++ 急转弯的地方,那些语言也紧急转了一个弯。 假设你有一套模拟股票处理的类层次结构,例如,购入流程,出售流程等。对这样的处理来说可以核查是非常重要的,所以随时会创建一个 Transaction 对象,将这个创建记录在核转载 2007-11-12 19:17:00 · 1013 阅读 · 0 评论 -
Visual C++中的异常处理(转)
Visual C++提供了对C语言、C++语言及MFC的支持,因而其涉及到的异常(exception)处理也包含了这三种类型,即C语言、C++语言和MFC的异常处理。除此之外,微软对C和C++的异常处理进行了扩展,提出了结构化异常处理(SEH)的概念,它支持C和C++(与之相比,MFC异常处理仅支持C++)。 一个典型的异常处理包含如下几个步骤: (1)程序执行时发生错误; (2)以一转载 2007-11-19 00:11:00 · 935 阅读 · 0 评论 -
数据类型转换(转)
int i = 100;long l = 2001;float f=300.2;double d=12345.119;char username[]="程佩君";char temp[200];char *buf;CString str;_variant_t v1;_bstr_t v2;一、其它数据类型转换为字符串短整型(int)itoa(i,temp,10);///将i转换为字符串放入te转载 2007-11-19 00:26:00 · 736 阅读 · 0 评论 -
RTTI运行时类型识别(转)
运行时类型信息机制包括3个主要部分:1、运算符dynamic_cast,给它一个指向某对象的基类指针,它能得到一个到这个对象的派生类指针。只有在被指对象确实属于所指明的派生类时,运算符dynamic_cast才给出这个指针,否则就返回0。2、运算符typeid,它给一个给定的基类指针识别出被指对象的确切类型。3、结构type_info ,作为与有关类型的更多运行时类型信息的挂接点(ho转载 2007-11-19 00:37:00 · 1793 阅读 · 0 评论 -
C++中进程间相互通信的十一种方法(转)
进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方 另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于其它进程的内存则是隐藏的,转载 2007-11-18 23:46:00 · 20106 阅读 · 0 评论 -
C/C++数组名与指针区别(转)
C/C++数组名与指针区别 引言 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着"数组名就是指针"转载 2007-11-19 00:29:00 · 584 阅读 · 0 评论 -
Exceptions
http://www.cplusplus.com/doc/tutorial/exceptions.html转载 2007-11-19 00:48:00 · 565 阅读 · 0 评论 -
关于MVC的一点启示(转)
MVC作为一种模型,通常用于分布式应用系统(比如:大型商业网站,企业管理系统等)的设计和分析,以及确定系统各部分间的组织关系。但这种分析方法,其实同样适用于其他领域。它本身并不含有某一特定领域的特有性质。 笔者认为,就MVC结构的本质而言,它是一种解决耦合系统问题的方法。在一个具有耦合特征的系统内部,各组成部分之间通过一定方式彼此关联。当某一部分的状态发生变动时,它会通过自身和外界的关联,影响转载 2007-11-06 02:30:00 · 628 阅读 · 0 评论 -
数学函数备忘录
列表:abs,acos,asin,atan,atan2,ceil,cos,cosh,exp,fabs,floor,fmod,frexp,hypot,ldexp,log,log10,modf,pow,pow10,sin,sinh,sqrt,tan,tanh. abs 原型:extern int abs(int x); 用法:#include 功能:求整数x的绝对值 说明转载 2007-11-04 22:31:00 · 1281 阅读 · 0 评论 -
STL版本(转)
HP STLHP STL是所有其它STL实现版本的根源。它是STL之父Alexander Stepanov在惠普的Palo Alto实验室工作时,和Meng Lee共同完成的,是第一个STL的实现版本(参见1.2节)。这个STL是开放源码的,所以它允许任何人免费使用、复制、修改、发布和销售该软件和相关文档,前提是必须在所有相关文件中加入HP STL的版本信息和授权信息。现在已经很少直接使用这个转载 2007-11-04 23:39:00 · 4180 阅读 · 2 评论 -
剖析C++标准库智能指针(std::auto_ptr)
1.Do you Smart Pointer? Smart Pointer,中文名:智能指针, 舶来品? 不可否认,资源泄露(resource leak)曾经是C++程序的一大噩梦.垃圾回收 机制(Garbage Collection)一时颇受注目.然而垃圾自动回收机制并不能 满足内存管理的即时性和可视性,往往使高傲的程序设计者感到不自在. 况且,转载 2007-10-28 20:15:00 · 1320 阅读 · 1 评论 -
嵌套类,局部类,联合
嵌套类 在一个类的内部定义另一个类,我们称之为嵌套类(nested class),或者嵌套类型。之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对用户隐藏该底层实现。 虽然嵌套类在外围类内部定义,但它是一个独立的类,基本上与外围类不相关。它的成员不属于外围类,同样,外围类的成员也不属于该嵌套类。嵌转载 2007-10-30 13:46:00 · 612 阅读 · 0 评论 -
C++默认编写并调用的函数
题外话:虽然这是基本知识,但是某次面试一紧张,竟然返回值写错了,强烈鄙视自己。。。 温故而知新,做个记号。 如果自己没有声明,编译器也会默认创建下列4个函数。且这些函数都是public和inline的。 代码如下:class CEmpty{public: CEmpty(void){...} ~CEmpty(void){...} CEmpty( c原创 2007-10-30 15:37:00 · 710 阅读 · 0 评论 -
strcpy()函数原型及分析(转)
已知strcpy函数的原型是char* strcpy(char* strDest,const char* strSrc);1.不调用库函数,实现strcpy函数2.解释为什么要返回char*;1.strcpy的实现代码char* strcpy(char* strDest,const char* strSrc){ if((strDest == NULL) || (strSrc ==转载 2007-10-31 16:56:00 · 1381 阅读 · 0 评论 -
函数,数组作为参数传递(转)
转载请保留: http://www.cnscn.org(CNS电脑与英语学习网)函数做为参数传递#include double cubed(double i){ return i*i*i;}double squared(double i){ return i*i;}double sum_array(double (*pfunc)(double)){ double i=3; printf转载 2007-11-02 00:46:00 · 681 阅读 · 0 评论 -
函数对象
第二十条: 里说到当参数是内置类型、STL、函数对象时,pass by value 往往比 pass by reference 的效率高。第一次看到函数对象的概念,于是去查了一下google,原来以前接触过的#_#!!!,如callback函数。相关学习信息如下:先 说明一下函数对象。 作者:vckbase VC知识库 尽管函数指针被广泛用于实现函数回调,但C++还提供了一个转载 2007-11-02 01:42:00 · 1102 阅读 · 0 评论 -
c++ volatile用法(转)
——看多线程文章的时候看到的,记录下来。 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1) 并行设备的硬件寄存器(如:状态寄存器)2) 一个中断服务子程序中会访问转载 2007-11-02 15:00:00 · 730 阅读 · 0 评论 -
嵌套类(C++ primer第三版)
一个类可以在另一个类中定义这样的类被称为嵌套类nested class 嵌套类是其外围类的一个成员嵌套类的定义可以出现在其外围类的公有私有或保护区中嵌套类的名字在其外围类域中是可见的但是在其他类域或名字空间中是不可见的这意味着嵌套类的名字不会与外围域中声明的相同名字冲突例如class Node { /* .转载 2007-11-04 00:20:00 · 2175 阅读 · 0 评论