📜  C ++ |静态关键字|问题5(1)

📅  最后修改于: 2023-12-03 14:59:36.982000             🧑  作者: Mango

C++ | 静态关键字 | 问题5

介绍

静态关键字是C++中的一个重要概念。它可以用来修饰变量、函数和类成员,在不同的上下文中有不同的含义。

静态变量是指在程序运行期间只被初始化一次的变量,其值在函数调用之间保持不变。静态函数是不能从外部文件访问的函数,其只能在所在文件使用。静态类成员是所有类对象共享的数据或函数,与特定对象无关。

在本文中,我们将讨论静态关键字的用法和作用,以及如何在C++程序中使用静态变量、函数和类成员。

用法和作用
静态变量

静态变量在程序的生命周期内只被初始化一次,其值在函数调用之间保持不变。

静态变量可以用于以下场景中:

- 储存常量
- 计数器
- 在函数调用之间保存值

例如,以下代码演示了如何使用静态变量来计数函数的调用次数:

#include <iostream>

void Count()
{
    static int cnt = 0;  // 静态变量

    ++cnt;
    std::cout << "函数已被调用 " << cnt << " 次" << std::endl;
}

int main()
{
    Count();
    Count();
    Count();

    return 0;
}

输出:

函数已被调用 1 次
函数已被调用 2 次
函数已被调用 3 次
静态函数

静态函数是不能从外部文件访问的函数,其只能在所在文件使用。

静态函数可以用于以下场景中:

- 定义一个只能在本文件中调用的函数
- 隐藏实现细节
- 优化程序性能

例如以下代码演示了如何使用静态函数来隐藏部分程序实现:

#include <iostream>

namespace MyNamespace
{
    void PublicFunction() // 公共的函数
    {
        std::cout << "I am public function" << std::endl;
        InternalFunction();  // 调用私有函数
    }

    static void InternalFunction()  // 私有的静态函数
    {
        std::cout << "I am internal function" << std::endl;
    }
}

int main()
{
    MyNamespace::PublicFunction();

    return 0;
}

输出:

I am public function
I am internal function
静态类成员

静态类成员是所有类对象共享的数据或函数,与特定对象无关。

静态类成员可以用于以下场景中:

- 储存与类相关的常量
- 用于类成员函数
- 统计类对象总数
- 储存共享数据

例如以下代码演示了如何使用静态类成员来统计类对象的总数:

#include <iostream>

class MyClass
{
public:
    MyClass()
    {
        ++_count;   // 每创建一个对象就增加计数器
    }

    static int getCount()
    {
        return _count;  // 返回对象总数
    }

private:
    static int _count;  // 静态成员

};

int MyClass::_count = 0;

int main()
{
    MyClass obj1;
    MyClass obj2;

    std::cout << "对象总数:" << MyClass::getCount() << std::endl;

    return 0;
}

输出:

对象总数:2
总结

静态关键字是C++编程中非常重要的一个概念。掌握静态变量、静态函数和静态类成员的用法和作用,可以有效提高程序的效率和可读性。在使用静态关键字时,需要注意其作用域和生命周期,以免引发意料之外的问题。