快捷搜索:  
C++  基本知识点

C++ 基本知识点

1. 写一个\"标准\"宏MIN ,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) = (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1) 标识#define在宏中应用的基本知识。这是很重要的。因为在 嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-els...

windows消息WM

windows消息WM

WM_NULL = $0000; WM_CREATE = $0001; 应用程序创建一个窗口 WM_DESTROY = $0002; 一个窗口被销毁 WM_MOVE = $0003; 移动一个窗口 WM_SIZE = $0005; 改变一个窗口的大小 WM_ACTIVATE = $0006; 一个窗口被激活或失去激活状态; WM_SETFOCUS = $0007; 获得焦点后 WM_KILLFOCUS = $0008; 失去焦点 WM_ENABLE = $000A; 改变enable状态 WM_SETR...

C++长连接和短连接

C++长连接和短连接

什么是长连接? 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。 通常的短连接操作步骤是: 连接-》数据传输-》关闭连接; 而长连接通常就是: 连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接; 这就要求长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了 什么时候用长连接,短连接? 长连接主要用于在少数客户端与服务端的频繁通信,因为这时候如果用短连接频繁通信常会发生Socket出错,并且频繁创建Sock...

Lock  Free(无锁)的GC  Allocator

Lock Free(无锁)的GC Allocator

免费午餐已经结束 尽管我们可以使用的 CPU 频率已经越来越高,以至于我们不少人称这是一个“CPU计算能力过剩的时代”。但是,事实恰恰相反。免费午餐已经结束,软件在历史性地向并发靠拢。 CPU性能提升在两年前就开始碰壁,但大多数人到了最近才有所觉察。大概在2003年初,一路高歌猛进的CPU时钟速度突然急刹车。受制于一些物理 学问题,如散热(发热量太大且难以驱散)、功耗(太高)以及泄漏问题等,时钟速度的提升已经越来越难。从单个CPU角度来讲,莫尔定律已经不再适用了。 接下来数年里,新型芯片的性能提升将主要...

C++中的EXIT与析构函数

C++中的EXIT与析构函数

几乎在每本课本中几乎都是这样写的,当一个类实例化以后,必将执行构造函数,那么在该类被释放的时候,必将执行析构函数。似乎在人们的印象里,构造函数与析构函数如同一对双胞胎一样,执行完构造函数,必将会执行析构函数...... 今天我做了个实验,彻底的推翻了这个理论。代码如下: #include \"stdafx.h\" using namespace std; class mycs { public: mycs() { cout\"构造函数\"endl; exit(1); } ~mycs() { cout\"...

有关缺省变量值的限制

有关缺省变量值的限制

在准标准C++中,有关缺省变量值的限制非常模糊。基于此,很多编译器允许开发人员将缺省变量值包含在函数声明,指向函数的指针和引用,成员函数的指针,以及typedef声明中。 请看一下以下的程序: struct A { void func(int x=5) { } }; void g(int n=12) { } // 根据C++标准,不能在以下声明中使用缺省变量值。 void (*pf)(inti=120); void (A::*pmf)(int j=50); typedef void (*PF)(inti...

C++类的友元成员

C++类的友元成员

没有友元之前,一个类是不能直接访问其它类的private成员的 引进友元机制是允许一个类的private,protected成员的访问权授予给指定的其它函数和其它类 2.定义 定义友元的关键字friend 格式: class classname{ ... friend functionname();//声明类的友元函数 friend class othername();//声明类的友元类 }; functionname(){} //定义友元函数代码细节 class othername(){}; //定义...

C++类构造函数

C++类构造函数

大部分对象在使用之前没有正确的初始化是C++出错的主要领域 引入类的构造函数是正确的初始化类的对象 一般什么时候触发并调用类的构造函数呢? 答案是:当我们用类来定义一个类变量的时候, 如: class demo{.....}; 声明并定义好完整的类 //当我们用类去建立一个对象时,它首先调用类的构造函数 demo d; //调用类的无参数的构造函数 demo d1(参数1,..) //按参数个数不同,调用类中不同的构造函数 2.定义 构造函数名和类名完全一样,可以根据不同的参数来实现重载不同的构造函数...

C++类析构函数

C++类析构函数

1.前言 大部分对象在使用之之后没有正确的从内存清理完毕,造成内存泄露也是C++出错的主要领域 引入类的析构是正确的从内存中清量类的对象 一般什么时候触发并调用类的析构函数呢? 答案是:当类实例对象超出它的有效作用域时,也就是撤消类对象时,自动调用析构函数来清理对象 构造函数用来初始化成员,析造函数则是用来清理对象 如我们删除一个类的指针对象,则自动调用析构函数: sales_item是一个类 sales_item *p = new sales_item //建立并分配一个类的指针p delete p;...

C++类复制控制

C++类复制控制

1.前言 复制控制通常指类的复制构造函数,赋值操作运算符,析构函数 1.1复制构造函数 引入复制构造函数是为了让类的对象直接生成另一个对象,同时把此对象的数据复制到另一个对象中 如果类中没有实现复制构造函数,编译器自动添加一个, 如果我们不需要,则把它明确的禁止,禁止方法是在private声明一个 2.定义 2.1复制构造函数的2种方法实现 base(const base org):x(org.x),y(org.y){} //用初始化列表方式实现 base(const base org){x=org.x...

C++重载输入输出符

C++重载输入输出符

当我们对一个类重载,运算符之后,就可以直接使用coutx,cinx两种简单的操作 a.重载输出运算符 因重最左边的操作数是ostream,自然就不能用类的成员函数重载,而只能以类的友元函数进行重载 //函数定义格式 friend ostream operator(ostream,const nameclass)const; //函数实现部分 ostream operator(ostream out,const classname object) { //local delcare if any //ch...

匈牙利命名法的探讨

匈牙利命名法的探讨

自己上课的老师推荐我们使用,但我发现在使用的过程中,随着程序的复杂性,命名会变得越来越长,而且写的时候容易少打字母之类的,累个半死.这种命名法好处可以直接明了知道类型.还是自己查资料看看怎么命名比较好.看了作者的原文,综合来看,这种方法适合特定的编程类型. 如:支持泛型编程和面向对象编程(这两种编程范型都是基于类型和参数来选择合适的操作)的语言来说,它却是完全不合适的。 参考资料C/C++高质量编程,The c programming lanuage,作者的网站 英文翻译如下: 不,我并不推荐“匈牙利命...