用&来传递比较大的参数,效率可能要高一些,可以用const来限制对参数的修改
只能对排在后面的那些参数提供默认值:int f(int, int =0, char* =0); //OK
在同一个作用域中随后的声明里,默认参数都不能重复或者改变
指向函数的指针,调用被指函数时,可以不写*符号,取地址时候也可以不写&:
void error(string s) {/*...*/}
void (*efct)(string);
void f()
{
efct = &error; // efct = error也可以
efct = ("error"); //(*efct) = ("error")也可以
}
指向函数的指针的数组很有用处,比如:
typedef void (*PF) ();
PF edit_ops[] = { //编辑操作
&cut, &paste, ©, &search
};
PF file_ops[] = { //文件管理
&open, &append, &close, &write
};
PF* button2 = edit_ops;
PF* button3 = file_ops;
button2[2](); //调用button2的第三个函数
宏的第一规则是:最好不要用它。。。宏名字不能重载,宏预处理器不能处理递归调用