static关键字和const关键字的作用

static关键字的作⽤

static 关键字主要⽤于控制变量和函数的⽣命周期、作⽤域以及访问权限。

1. 静态局部变量

在函数内部使⽤ static 关键字修饰的局部变量是静态局部变量。

静态局部变量的⽣命周期延⻓到整个程序的执⾏过程,但只在声明它的函数内可⻅。

void exampleFunction() {

static int localVar = 0; // 静态局部变量

localVar++;

cout << "LocalVar: " << localVar << endl;

}

  1. 静态全局变量

静态全局变量是在 文件作用域 中使用 static 关键字声明的变量。

它的作用域仅限于定义它的文件,其他文件无法访问。

// file1.cpp

static int hiddenVar = 42; // 静态全局变量,仅在 file1.cpp 中可见

void printVar() {

    std::cout << hiddenVar << std::endl; // 可以访问

}

// file2.cpp

extern int hiddenVar; // 错误!无法访问 file1.cpp 中的 hiddenVar

  1. 静态全局函数

静态函数是在 文件作用域 中使用 static 关键字声明的函数。

它的作用域仅限于定义它的文件,其他文件无法调用。

// file1.cpp

static void helper() { // 静态函数,仅在 file1.cpp 中可见

    std::cout << "This is a helper function." << std::endl;

}

void publicFunc() {

    helper(); // 可以调用

}

// file2.cpp

extern void helper(); // 错误!无法访问 file1.cpp 中的 helper 函数

4. 静态成员变量

在类中使⽤ static 关键字修饰的成员变量是静态成员变量。

所有类的对象共享同⼀个静态成员变量的副本。

静态成员变量必须在类外部单独定义,以便为其分配存储空间。

class ExampleClass {

public:

static int staticVar; // 静态成员变量声明

};

// 静态成员变量定义

int ExampleClass::staticVar = 0;

4. 静态成员函数

在类内部使⽤ static 关键字修饰的函数是静态成员函数。

静态成员函数属于类⽽不是类的实例,可以通过类名直接调⽤,⽽⽆需创建对象。

静态成员函数不能直接访问⾮静态成员变量或⾮静态成员函数。

class ExampleClass {

public:

static void staticFunction() {

cout << "Static function" << endl;

}

};

const 关键字的作⽤

const 关键字主要⽤于指定变量、指针、引⽤、成员函数等的性质

1. 常量变量:声明常量,使变量的值不能被修改。

2. 指针和引⽤:声明指向常量的指针,表示指针所指向的值是常量,不能通过指针修改。声明常量引⽤,表示引⽤的值是常量,不能通过引⽤修改。

const int* ptr = &constantValue; // 指向常量的指针

const int& ref = constantValue; // 常量引⽤

3. 成员函数:⽤于声明常量成员函数,表示该函数不会修改对象的成员变量(对于成员变量是⾮静态的情况)。

4. 常量对象:声明对象为常量,使得对象的成员变量不能被修改。

5. 常引⽤参数:声明函数参数为常量引⽤,表示函数不会修改传⼊的参数。

6. 常量指针参数:声明函数参数为指向常量的指针,表示函数不会通过指针修改传⼊的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值