Blocks下的第一个C++程序
main.cpp:
#include
#include
using namespace std;
class Test
{
public:
string name;
long id;
bool pass;
public:
void getUser()
{
pass=false;
while(pass==false)
{
try{
pass=true;
cout>id;
if(cin.fail()) //判读输入是不是正确的
{
throw new exception;
}
cout>name;
//下面是不用异常处理方法做的。注意里面 ...
TMouse
TMouse类包含鼠标的信息。
类关系 TObject
TMouse类使用全局鼠标变量来得到鼠标的信息。
属性列表
Capture 指定获得鼠标事件的窗口的句柄
CursorPos 指定鼠标光标的位置
DragImmediate 确定是否单击鼠标左键就立即开始一个Drag事件
DragThreshold 确定为了产生一个鼠标事件,当鼠标左键按下后鼠标光标必须移动的像素点数
Mo ...
二叉树实现源代码
二叉树实现源代码如下:
#include
#include
#include
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OVERFLOW -2
typedef int status;
typedef struct BiNode
{
char Data;
struct BiNode* lChild;
struct BiNode* rChild;
}BiNode,*pBiNode;
status CreateTree(BiNode** pTree);
s ...
TDecisionCube
TDecisionCube维护它提供给TDectisionSource对象的交叉制表的数据。
TCecisioncube对象加到一个窗体或数据模块,可以允许应用程序表示交叉制表的数据, TDecisionCube将来自源数据集的数据分解成每一维相当于被概括信息的数据集的一个字段的多维结构。任何数据集都可以用作TDecisioncube对象的源,但对TDecisionQuery工 ...
计算机编程的24条法则
1、致命的异常终止决不允许
2、以这个次序编写:用户手册、说明书、帮助、源代码
3、除非你使用Risk Factor Analysis (RFA),否则一个程序将花费双倍你认为开发所需的时间---重复工作
4、编码工作量应该不超过开发工作的百分之二十
5、测试应该至少占工程的百分之三十
6、注释应该至少要占源代码的百分之二十
7、一条错误信 ...
匈牙利命名法
这个方法可能很多人都听说过,包括我在内的一些人也试图去使用它,可是还是觉得自己的好,但是现在看来这种想法是错误的。再解释解释吧。这些符号可以多个同时使用,顺序是先m_,(这上标记指成员变量)再指针,再简单数据类型,再其他。例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。
a Array
b Boo ...
C++类对象的拷贝构造函数分析
对于普通类型的对象来说,它们之间的复制是很简单的,例如:
int a=100;
int b=a;
而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。
#include
using namespace std;
class CA
{
public:
CA(int b)
{
a=b;
}
void Show ()
{
co ...
C++运算符重载转换运算符
为什么需要转换运算符?
大家知道对于内置类型的数据我们可以通过强制转换符的使用来转换数据,例如(int)2.1f;自定义类也是类型,那么自定义类的对象在很多情况下也需要支持此操作,C++提供了转换运算符重载函数,它使得自定义类对象的强转换成为可能。
转换运算符的生命方式比较特别,方法如下:
operator 类名();
转换运算 ...
数据结构学习(C++)之稀疏矩阵
先说说什么叫稀疏矩阵。你说,这个问题很简单吗,那你一定不知道中国学术界的嘴皮子仗,对一个字眼的“抠”将会导致两种相反的结论。这是清华2000年的一道考研题:“表示一个有1000个顶点,1000条边的有向图的邻接矩阵有多少个矩阵元素?是否稀疏矩阵?”如果你是个喜欢研究出题者心理活动的人,你可以看出这里有两个陷阱, ...
C++启蒙之C++中的类
在解决我们的书店问题之前,我们需要理解的唯一的剩余问题是如何编写一个数据结构(data structure)来表示我们的事务数据。在C++中我们通过定义类(class)来定义自己的数据结构。类机制是C++中最重要的特性之一。实际上,C++设计的主要聚焦点是使我们能够定义类类型(class types),使它的操作与内建类型一样自然。我们 ...
More Effective C++:避免缺省构造函数
缺省构造函数(指没有参数的构造函数)在C++语言中是一种让你无中生有的方法。构造函数能初始化对象,而缺省构造函数则可以不利用任何在建立对象时的外部数据就能初始化对象。有时这样的方法是不错的。例如一些行为特性与数字相仿的对象被初始化为空值或不确定的值也是合理的,还有比如链表、哈希表、图等等数据结构也可以被 ...
数据结构学习(C++)之单链表
节点类
#ifndef Node_H
#define Node_H
template class Node //单链节点类
{
public:
Type data;
Node *link;
Node() : data(Type()), link(NULL) {}
Node(const Type &item) : data(item), link(NULL) {}
Node(const Type &item, Node *p) : data(item), link(p) {}
};
#endif
【说明】因为数据 ...
用C++品尝Vista美味:界面的毛玻璃效果
简介
本文将演示在基于Windows Vista的普通Windows应用程序及对话框程序中,如何利用C++来生成Aero毛玻璃效果,此处使用的是Beta 2版本的Vista及Windows SDK,也许在后续的版本中,一些API在细节上会有所变化。另外,文中没有使用MFC,全部例子用WTL 7.5生成,其可在http://wtl.sourceforge.net/下载得到,虽然此处使用的是 ...
More Effective C++:不要重载的操作符
与C一样,C++使用布尔表达式简化求值法(short-circuit evaluation)。这表示一旦确定了布尔表达式的真假值,即使还有部分表达式没有被测试,布尔表达式也停止运算。例如:
char *p;
...
if ((p != 0) && (strlen(p) > 10)) ...
这里不用担心当p为空时strlen无法正确运行,因为如果p不等于0的测试失败,strlen不会被调用。同 ...
数据结构学习(C++)之二叉树
树
因为现实世界中存在这“树”这种结构——族谱、等级制度、目录分类等等,而为了研究这类问题,必须能够将树储存,而如何储存将取决于所需要的操作。这里有个问题,是否允许存在空树。有些书认为树都是非空的,因为树表示的是一种现实结构,而0不是自然数;我用过的教科书都是说可以有空树,当然是为了和二叉树统一。这个 ...
More Effective C++之考虑变更程序库
程序库的设计就是一个折衷的过程。理想的程序库应该是短小的、快速的、强大的、灵活的、可扩展的、直观的、普遍适用的、具有良好的支持、没有使用约束、没有错误的。这也是不存在的。为尺寸和速度而进行优化的程序库一般不能被移植。具有大量功能的的程序库不会具有直观性。没有错误的程序库在使用范围上会有限制。真实的世 ...
C++语言代码检查工具PC-Lint四步速成
概述
PC-Lint是一个历史悠久,功能异常强劲的静态代码检测工具。它的使用历史可以追溯到计算机编程的远古时代(30多年以前)。经过这么多年的发展,它不但能够监测出许多语法逻辑上的隐患,而且也能够有效地帮你提出许多程序在空间利用、运行效率上的改进点,在很多专业级的软件公司,比如Microsoft, PC-Lint检查无错误无警 ...
数据结构学习(C++)之栈和队列
栈和队列是操作受限的线性表,好像每本讲数据结构的数都是这么说的。有些书按照这个思路给出了定义和实现;但是很遗憾,本文没有这样做,所以,有些书中的做法是重复建设,这或许可以用不是一个人写的这样的理由来开脱。
顺序表示的栈和队列,必须预先分配空间,并且空间大小受限,使用起来限制比较多。而且,由于限定存取 ...
C++中用赋值形式op=取代单独形式op
大多数程序员认为如果他们能这样写代码:
x = x + y; x = x - y;
那他们也能这样写:
x += y; x -= y;
如果x和y是用户定义的类型(user-defined type),就不能确保这样。就C++来说,operator+、operator=和operator+=之间没有任何关系,因此如果你想让这三个operator同时存在并具有你所期望的关系,就必须自己实现它们。同 ...
More Effective C++:防止资源泄漏
如果你正在开发一个具有多媒体功能的通讯录程序。这个通讯录除了能存储通常的文字信息如姓名、地址、电话号码外,还能存储照片和声音(可以给出他们名字的正确发音)。
为了实现这个通信录,你可以这样设计:
class Image { // 用于图像数据
public:
Image(const string& imageDataFileName);
...
};
class AudioCli ...