开发实战进阶之函数【c++】一

函数

在C++中,函数是代码的基本组成部分,用于执行特定的任务。C++中函数的种类可以根据其功能、特性以及定义方式进行分类。以下是C++中常见的函数种类:

1. 普通函数(普通成员函数)

  • 这是最基本的函数类型,用于执行特定的任务,可以接收参数并返回值。普通函数可以是全局的(定义在类外)或成员函数(定义在类内)。

示例

int add(int a, int b) {
    return a + b;
}

2. 静态函数

  • 静态成员函数
    • 静态成员函数属于类,而不属于类的某个实例。它可以在没有对象实例的情况下调用,并且只能访问静态成员变量。

示例

class MyClass {
public:
    static int staticFunction(int a) {
        return a * 2;
    }
};
  • 静态全局函数
    • 在文件内部使用static关键字声明的函数,它的作用域仅限于定义它的文件中,不能被其他文件访问。

示例

static int localFunction(int a, int b) {
    return a + b;
}

3. 虚函数

  • 虚函数是用于实现多态性(polymorphism)的关键元素。通过在基类中声明虚函数,派生类可以覆盖该函数,并在运行时根据对象的实际类型调用相应的函数版本。

示例

class Base {
public:
    virtual void show() {
        std::cout << "Base class show function" << std::endl;
    }
};

class Derived : public Base {
public:
    void show() override {
        std::cout << "Derived class show function" << std::endl;
    }
};

4. 纯虚函数(抽象函数)

  • 纯虚函数是虚函数的一种特殊形式,用于创建抽象类。抽象类不能实例化,纯虚函数必须由派生类实现。

示例

class AbstractClass {
public:
    virtual void pureVirtualFunction() = 0;  // 纯虚函数
};

5. 内联函数

  • 内联函数通过inline关键字声明,建议编译器将函数调用展开为函数体的内容,以减少函数调用的开销。适合那些频繁调用且代码量小的函数。

示例

inline int multiply(int a, int b) {
    return a * b;
}

6. 重载函数

  • C++支持函数重载,即在同一个作用域内可以定义多个同名函数,但它们的参数列表(参数的数量、类型或顺序)必须不同。

示例

int sum(int a, int b) {
    return a + b;
}

double sum(double a, double b) {
    return a + b;
}

7. 模板函数

  • 模板函数允许在编写函数时不指定数据类型,而在使用时由编译器根据传递的参数类型自动生成对应的函数代码。模板函数适用于编写通用性强的代码。

示例

template <typename T>
T add(T a, T b) {
    return a + b;
}

8. 递归函数

  • 递归函数是指在函数的定义中调用自身的函数。这种方式通常用于解决可以分解为相似子问题的任务,如阶乘、斐波那契数列等。

示例

int factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

9. Lambda 表达式(匿名函数)

  • C++11引入了Lambda表达式,使得可以在代码中定义匿名函数(没有名字的函数),主要用于需要短小的回调函数或临时函数的场景。

示例

auto add = [](int a, int b) -> int {
    return a + b;
};
std::cout << add(5, 3) << std::endl;  // 输出8

10. 友元函数

  • 友元函数是声明在类外部,但却能访问类的私有成员和保护成员的函数。通常用于需要访问类的内部实现而不属于类本身的操作。

示例

class MyClass {
    friend void show(MyClass &obj);  // 声明友元函数
private:
    int secret = 42;
};

void show(MyClass &obj) {
    std::cout << obj.secret << std::endl;
}

总结

C++语言中有多种类型的函数,每种类型都有其特定的用途和特性。通过灵活使用这些函数类型,开发者可以编写更高效、更灵活和更可维护的代码。熟悉并掌握这些函数类型,对于提升C++编程能力至关重要。

未完待续

开发实战进阶之函数【c++】二

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值