内联函数
在定义的时候用关键字inline修饰,声明的时候不需要使用
作用:在编译阶段 将内联函数总的函数体替换函数调用处,避免函数调用时的开销
但是inline只是对编译器的一个建议,具体能不能变成内联函数还是由编译器自动决定
函数重载
函数重载 是c++的多态的特性(静态多态)
定义 用同一个函数名 代表不同的函数功能
在统一作用域,函数的参数类型,个数,顺序不同都可以重载
void printFun(int a)
{
cout << a << endl;
}
void printFun(int a, char (&b)[32])
{
cout << a << endl;
cout << b << endl;
}
void test01()
{
int a = 10;
char b[32] = "123";// 在string的情况下,就把还是用char 定义,但是用数组的形式表示,就想着是数组就可以了!!调用方法也是数组的形式
printFun(a);// 10
printFun(a,b);// 10 123
}
函数默认参数
python中也有这个功能,示例如下
def add(x, y, z=None):
if z:
return x + y + z
else:
return x + y
print(add(2, 3)) # 输出 5
print(add(2, 3, 4)) # 输出 9
void testfunc01(int a = 10, int b = 20)
{
cout << a+b << endl;
}
//void testfunc02(int a , int b = 20, int c)// 注意,如果是testfun(int a, int b = 10, int c =10) 出现了int b是默认参数时,b后面的都必须有默认参数,否则会报错
//{
// cout << a+b << endl;
//}
void test02()
{
testfunc01();
testfunc01(100);
testfunc01(100,200);
}
如果声明和定义是分开的化,在声明的时候使用默认参数就可以,定义的时候不需要
附录
c++也可以添加占位参数,只是在函数内不能使用(目前不知道为啥要有展位参数)
extern “C”
目的是声明c++中有c语言的代码,按照c语言的编译器进行编译
#if _cplusplus
extern “C”{}