
C/C++
LeiShi
在期货证券行业中从事大型交易系统的设计和开发工作。
展开
-
互为成员两个类的声明
class B;class A{ B * m_pB;};class B{ A mA;}关键有两点:1. 其中的一个类需要提前声明(forward declaration);2. 被提前声明的类在其被具体定义之前只能声明该类的指针或引用,如上面class A定义中只能声明class B的指针(或引用)。 一旦类的定义结束(编译器在遇到类定义的右花括号之后),用该类来声明原创 2006-05-24 10:54:00 · 1604 阅读 · 0 评论 -
类模板与模板类
1.类模板,是想把数据类型从类中分离出来,成为一个类的描述最简单的类模板定义例如:template class 抽象类名{T ...//} 2.模板类是一些MFC自带的类库CSingleDocTemplate就是一种,本身是个抽象类,目的就是用来定义一些"Doc/Frame/View"的基础函数,用来协调三者行动和管理 3.RUNTIME_CLASS太多了,建议读读,原创 2010-01-06 09:15:00 · 616 阅读 · 0 评论 -
模板的声明与定义
通常,我们是在.h文件中声明函数和类,而将其定义放在单独的.cpp文件中。但在使用模板时,这样做就不行了,由于编译器在碰到某个模板的实例时,必须看到实际的模板定义,而不仅仅是声明。因此,最好是同时将模板的声明和定义都放在相同的.h文件中。因为这个缘故,所有STL头文件都包含模板的定义,而不仅仅只有模板声明。原创 2010-01-06 09:21:00 · 1093 阅读 · 0 评论 -
用auto_ptr类模板帮助动态内存管理
动态内存使用最多的是在C++应用程序的代码中。有过编程经验的程序员虽然都知道new操作符的使用一定要与delete匹配,在某些场合仍然可能有内存溢出。当异常被掷出时,程序的正常控制流程被改变,因此导致潜在的内存溢出。例如, void g() //可能掷出{ if (some_condition == false) throw X();}void func() { string * pst转载 2010-01-06 09:23:00 · 650 阅读 · 0 评论 -
堆和栈的区别
堆:heap是大家共有的空间,分全局堆和局部堆。 全局堆就是所有没有分配的空间 局部堆就是你分配的空间 堆在操作系统对进程初始化的时候分配 运行过程中你也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏 堆里面一般放的是静态数据比如static的数据和字符串常量什么的,资源加载后一般也放在堆里面 一个进程的所有线程共有这些堆,所以对堆的操作要考虑同步和互斥的问题原创 2006-05-24 10:34:00 · 959 阅读 · 0 评论 -
关于C++类成员的初始化
在使用C++编程的过程当中,常常需要对类成员进行初始化,通常的方法有两种: 第一种方法: CMYClass::CSomeClass(){ x=0; y=1;}第二种方法: CSomeClass::CSomeClass() : x(0), y(1){} 从技术上说,第二种方法比较好,但是在大多数情况下,两者实际上没有什么区别。第二种语法被称为成员初始原创 2006-05-23 14:18:00 · 1358 阅读 · 0 评论 -
inline和static
inline: 在调用处不是call指令,而是插入函数体,适合于短小的函数,省去参数入栈以及执行call、ret指令的过程,提高函数效率。inline指定函数的存储方式。static: 该函数只能访问类的static成员(包括数据和函数),static数据成员对于该类只有一个copy,为所有对象共享,在类对象创建前已经可用。static指定函数的操作方式。原创 2006-05-24 10:59:00 · 1283 阅读 · 0 评论 -
C++中的虚函数
1.简介 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次:class A{public: virtual void foo() { cout };class B: public A{public: virtual void foo() { cout };那么,在使用的时候,我们可以:原创 2006-05-23 15:34:00 · 1002 阅读 · 0 评论 -
指针的艺术
指针的艺术 作为一个C++程序员,指针的直接操作内存,在数据操作方面有着速度快,节约内存等优点,仍是很多C++程序员的最爱。指针是一把双刃剑,用好了它,你就会发现指针有多么的方便,反之,你可能就头疼了,往往会出现意想不到的问题。一.什么是指针: 其实指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,而指针是一个指示器,它告诉程序在内存的哪块区域可以找到数据。转载 2006-05-23 15:29:00 · 951 阅读 · 0 评论 -
关于const的几点说明
const1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法2. 必须初始化 const int i=5; //合法 const int j; //非法,导致编译错误3. 在另一连接文件中引用const常量 extern const int原创 2006-05-23 14:09:00 · 1212 阅读 · 0 评论 -
C++如何处理内联虚函数
当一个函数是内联和虚函数时,会发生代码替换或使用虚表调用吗? 为了弄清楚内联和虚函数,让我们将它们分开来考虑。通常,一个内联函数是被展开的。 class CFoo { private: int val; public: int GetVal() { return val; } int SetV原创 2006-05-24 11:16:00 · 1215 阅读 · 0 评论 -
作为对象的函数指针
在STL算法中,只要用到函数对象的地方(也就是functor),都可以把函数指针作为对象来使用。这种特性不论是在思路上还是在理解functor的工作原理上都是很重要的。Functor提供了一种将函数指针传递到STL算法的途径。与以往不同的是这里函数指针可以是一个类,或者是支持函数原创 2011-08-02 15:15:15 · 527 阅读 · 0 评论