内联思想:提高效率
短小精悍
用inline修饰的函数
在结构体或者类型实现的函数,默认为内联函数
重载思想
C++允许同名不同参的函数存在
参数个数不同
参数类型不同
参数顺序不同(建立在存在不同类型)
const不构成重载
缺省思想:给函数形参初始化,达到不同形参的函数调用
缺省的顺序:必须的从右道左,连续缺省
缺省的时候,要避免存在普通函数,防止存在二义性
Lambda表达式:函数的定义并且返回一个函数指针,所以一般在C++中会结合auto使用
[捕获方式](函数参数)是否修改 是否存在异常->函数返回值类型{函数体;};
1.[]
2.[=]
3.[&]
4.[&,x, = ]
5.[this] 类中数据成员的捕获
函数参数: 自己写函数的时候的函数参数
能否修改:mutable
是否存在异常:throw() 不存在
#include <iostream>
inline int Max(int a, int b)
{return a > b ? a : b;
}
//缺省:不传入参数使用默认参数
void PrintValue(int a = 110, int b = 120)
{std::cout << a + b << "\n";
}
void PrintMax(int (*p)(int, int), int a, int b)
{std::cout << p(a,b) << "\n";
}//QT强无敌,啥时候能摸摸
//Lambda表达式
void testLambda()
{//最完整的Lambda表达式int(*pMax)(int, int) = [](int a, int b)mutable throw()->int {return a > b ? a : b; };//一般用的时候怎么简单怎么来,结合auto+省略的Lambda表达式去使用auto p = [](int a, int b) {return a > b ? a : b; };std::cout << p(12345, 119) << "\n";//进阶一下:函数的定义和调用写在一起std::cout << [](int a, int b) {return a > b ? a : b; }(888,666) << "\n";PrintMax([](int a, int b) {return a + b; }, 6, 6);//捕获方式int num = 1;auto p1 = [=]() {std::cout << num << "\n"; };auto p2 = [&]() {std::cout << num << "\n"; };p1();p2();num = 1001;p1();p2();
}int main()
{auto* p = Max;std::cout << p(1, 2) << "\n";PrintValue();//PrintValue(0);testLambda();std::cout << "Hello World!\n";
}