static 用法
static 用法
1. static 变量
•static修饰的变量定义:在函数内部使用 static 关键字声明的变量称为静态变量。
•特点:
–静态变量的生命周期在整个程序运行期间都存在,而不仅仅在函数调用时才存在。
–静态变量存储在静态存储区,不会在函数调用结束后释放内存。
•使用场景:
–如果一个变量需要在多次函数调用之间保持其值不变,可以使用静态变量。
–静态变量通常用于计数器或者保存函数的返回值等场景。
•示例代码:
#include <>
int count() {
static int counter = 0;
counter++;
return counter;
}
int main() {
printf("%d\n", count()); // 输出1
printf("%d\n", count()); // 输出2
printf("%d\n", count()); // 输出3
return 0;
}
2. static 函数
•定义:在函数返回类型前面加上 static 关键字,使函数变为静态函数。
•特点:
–静态函数只能在声明它的源文件内部调用,不能被其他源文件使用。
–静态函数不能被其他源文件中的函数调用,从而起到了隐藏的作用。
•使用场景:
–当某个函数只在当前源文件内部使用时,可以将其声明为静态函数,以减少命名冲突和提高代码的模块化程度。
•示例代码:
#include <>
static int multiply(int a, int b) {
return a * b;
}
int main() {
int result = multiply(2, 3);
printf("%d\n", result); // 输出6
return 0;
}
3. static 类成员
•定义:在类中声明的 static 成员属于类本身,而不是类的实例。
•特点:
–所有的对象共享同一个静态成员,即静态成员对于所有的对象来说只有一份拷贝。
–静态成员可以通过类名直接访问,不需要创建对象。
•使用场景:
–静态成员通常用于表示类的共享属性或者保存全局状态。
–静态成员函数可以访问静态成员变量,但不能访问非静态成员变量。
•示例代码:
#include <iostream>
class Circle {
public:
static int count;
int radius;
Circle() {
count++;
}
};
int Circle::count = 0;
int main() {
Circle circle1;
Circle circle2;
std::cout << Circle::count << std::endl; // 输出2
return 0;
}
4. static 修饰符
•定义:在 C#、Java 等面向对象的编程语言中,static 修饰符用于定义静态成员、方法和类。
•特点:
–静态成员属于类本身,可以通过类名直接访问。
–静态方法不能访问非静态成员变量,只能访问静态成员变量。
–静态类不能被实例化,只能通过类名直接调用静态方法。
•使用场景:
–静态成员常用于表示全局变量、全局方法或者实用工具类。
•示例代码(Java):
public class Circle {
private static int count;
private int radius;
public Circle() {
count++;
}
public static int getCount() {
return count;
}
}
public class Main {
public static void main(String[] args) {
Circle circle1 = new Circle();
Circle circle2 = new Circle();
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论