static在c++的应用

在 C++ 中,关键字 static 在不同的上下文中具有不同的意义。下面是它的几个主要用途和对应的解释:

在全局范围:全局的静态变量或函数只在定义它的文件中可见,这意味着其他文件中的代码不能直接访问此变量或函数。这提供了一种封装和隐藏实现细节的方式。

cpp

// file1.cpp
static int hiddenVariable = 42;

在其他源文件中,hiddenVariable 是不可见的。

在类中的静态成员:静态成员属于类本身,而不是类的任何特定对象。这意味着无论创建多少个该类的对象,都只有一个静态成员的副本。

cpp

class MyClass {
public:
static int staticMember;
};

int MyClass::staticMember = 0;

你可以使用类名直接访问静态成员,例如 MyClass::staticMember。

在函数内的静态变量:在函数内部声明的静态变量在函数第一次调用时初始化,之后在连续的函数调用中保持其值不变。这与普通的局部变量不同,因为普通的局部变量在每次函数调用时都会被重新初始化。

cpp

void myFunction() {
static int count = 0;
count++;
std::cout << count << std::endl;
}

如果你连续调用 myFunction() 三次,输出将是 1, 2 和 3。

静态成员函数:类中的静态成员函数可以在没有类的对象实例的情况下被调用,它只能访问类的静态成员。

cpp

class MyClass {
public:
    static void staticFunction() {
        // can access static members here
    }
};

你可以这样调用它:MyClass::staticFunction();

总的来说,static 在 C++ 中提供了各种用途,从隐藏实现细节,到为类提供共享数据,再到在函数调用之间保持变量状态。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值