C++学习-2023/12/13-C++函数上的改变

内联思想:提高效率

短小精悍
用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";
}

相关推荐

  1. C++学习-2023/12/13-C++函数改变

    2023-12-15 23:36:03       59 阅读
  2. C++函数模板学习

    2023-12-15 23:36:03       20 阅读
  3. [C++基础学习-05]----C++函数详解

    2023-12-15 23:36:03       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-15 23:36:03       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-15 23:36:03       97 阅读
  3. 在Django里面运行非项目文件

    2023-12-15 23:36:03       78 阅读
  4. Python语言-面向对象

    2023-12-15 23:36:03       88 阅读

热门阅读

  1. pyspark on yarn

    2023-12-15 23:36:03       61 阅读
  2. ThinkPHP和PHP有什么区别

    2023-12-15 23:36:03       61 阅读
  3. 深度学习中,网络、模型、算法有什么区别

    2023-12-15 23:36:03       54 阅读
  4. 汽车锁行业分析:市场销量接近1700万台

    2023-12-15 23:36:03       55 阅读
  5. Linux面试题1

    2023-12-15 23:36:03       44 阅读
  6. 端口复用的SPI控制

    2023-12-15 23:36:03       69 阅读
  7. 【Android】动态添加 Fragment

    2023-12-15 23:36:03       59 阅读
  8. 【洛谷】连续自然数和

    2023-12-15 23:36:03       63 阅读