在程序中要屏蔽大段代码的时候使用
#if 0
statements
#endif
可以有效的将代码从程序中屏蔽,而使用/* */注释时可能会因为代码内部含有注释而失败。
typedef char * ptrtochar
ptrtochar a, b;
a, b都是字符指针
#define ptrtochar char *
ptrtochar a, b;
a是字符指针,b是字符
#undef name
这条指令用于移除一个宏定义,如果一个现存的名字需要重新定义,那么它的旧定义首先必须用#undef移除。
条件编译
#if condition
statements
#endif
是否定义
#if defined(symbol)
#ifdef symbol
#if !defined(symbol)
#ifndef symbol
int fuc()[];这个函数是非法的,函数只能返回标量值,不能返回数组。
int f[]();也是非法的,数组元素必须具有相同的长度,而不同的函数显然可能具有不同的长度。
int (*f[])();是合法的,首先f是一个数组,它的元素是某种类型的指针,数组元素的类型是个函数指针。它所指向的函数的返回值是整形。
int *(*f[])();和上一个类似,只不过数组元素指向的函数的返回值是整形指针。
类定义与使用说明
(1) 函数成员与数据成员一样在函数中定义;外部函数调用类成员
与结构调用一样,但只能调用公共成员.
(2) 类成员函数能够直接访问类中所有定义的成员.
(3) 每个类均有一个所属类的指针this.
(4) 函数可以在类中定义,也可在函数外定义.
在外部定义格式如下: 类型 类::函数(参数)
但在类中要进行函数原形说明;
(5) 成员函数也可以定义为内联函数;
(6) 成员函数也可以说明为可选参数函数;
(7) 类的大小应为每个成员的字节数和;
(8) 成员函数也允许操作符重载;
构造函数
(1) 构造函数与析构函数属于类中的成员函数.
(2) 构造函数与所在的类具有相同的名字,并且不带返回类型,
也不需要返回任何值.
(3) 构造函数的作用是为类对象中有数据成员赋初值.
(4) 构造函数在定义类对象时自动调用,完成赋值任务.
(5) 一般构造函数均定义为公用成员.
(6) 如果类中没有定义构造函数,则系统默认为:
类名() { } 如: aaa() {}
(7) 给类对象赋初值时
①采用赋值语句把表达式的值赋给成员变量;
若只带一个参数,可以使用赋值号代替.
例: aaa x(5) 或 aaa x=5
②初始化表的办法;
格式: 函数名: 数据成员名(初始化表达式)
例: aaa():a(NULL),n(0){}
(8) 动态分配一个类对象,有无参数参照如下格式:
aaa *s1= new aaa;
aaa *s2= new aaa(a,6);