C++中的static

本文介绍了C++中的static修饰符的用法,包括如何用于修饰成员函数和变量。static修饰的成员函数只能访问静态成员,而静态成员变量为类的所有实例共享。此外,static还能限制全局变量和局部变量的作用域,延长局部变量的生命周期。示例代码展示了static的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 修饰函数

  • 修饰成员函数,标识该函数为类静态函数,只能访问static修饰的静态成员变量或函数。

  • 修饰普通函数,函数的作用域只在本文件

  • 修饰变量

  • 修饰成员变量

  1. 需要在函数体外进行初始化

  1. 被所有成员共享

  1. 可以被普通成员函数访问,也可以被static成员函数访问

  • 修饰局部变量

  1. 变量生命周期变长

  • 修饰全局变量

  1. 变量的作用域只在本文件

  • 示例代码

static.h

#ifndef STATIC_H
#define STATIC_H

//修饰全局变量
static const int MYSIZE = 0;

void Func();

class MyClass
{
public:
    static void Func();
private:
    int val_;
    static int sval_;
};

#endif // STATIC_H

static.cpp

#include "static.h"
#include <iostream>

int globalVal = 1;

//修饰全局变量
static int sglobalVal = 2;

void Func()
{
    std::cout << MYSIZE << std::endl;
}

//静态成员变量必须在类外初始化
int MyClass::sval_ = 1;

void MyClass::Func()
{
    //无法访问非静态成员
    //val_ = 1;
    //只能访问静态成员
    sval_ = 2;
    std::cout << sval_ << std::endl;
}

main.cpp

#include <iostream>
#include "static.h"

using namespace std;
//普通的全局变量可以通过extern声明在其他文件中使用
extern int globalVal;
//被static修饰的全局变量,即使被extern修饰也会编译报错
//extern int sglobalVal;
int main()
{
    cout << "Hello World!" << endl;
    Func();
    cout << MYSIZE << endl;
    cout << globalVal << endl;
    MyClass::Func();
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值