为了实现多个类公用一个成员变量或函数诞生了static,静态成员变量和静态成员函数。
static成员变量
格式
class A
{
public:
static 静态成员变量类型 静态成员名;
}
}
- 静态成员变量必须在类外进行初始化,类内初始化会报错
class A {
private:
static int x ;
};
int A::x = 0;
int main()
{
A a();
return 0;
}
-
静态成员变量是属于此类,而不属于此类的某个对象,所以这个静态成员变量只有一个,存放在静态区。
-
因为静态变量属于整个类,所以既可以用类对象.静态变量,也可以直接用类类型::静态变量
-
静态成员也是类的成员,受public、protected、private 访问限定符的限制
static成员函数
格式
class A
{
public:
static 返回值类型 函数名(参数类型1 参数1.....) ;
}
}
- 前四条特性与static成员变量相同
- 五、静态成员函数没有隐藏的this指针,所以不能调用非静态的成员。
- static静态成员函数不能调用非静态成员函数
- 非静态成员函数可以调用static静态成员函数
- 五、静态成员函数没有隐藏的this指针,所以不能调用非静态的成员。
static练习
求1+2+3+…+n_牛客题霸_牛客网 (nowcoder.com)
答:
class Solution {
class Sum{
friend int Sum_Solution(int n);
public:
Sum()
{
tmp++;
ret+=tmp;
}
};
public:
int Sum_Solution(int n) {
Sum S[n];
return ret;
}
private:
static int tmp;
static int ret;
};
int Solution::tmp = 0;
int Solution::ret=0;
✨本文收录于C++语法及练习
当你喜欢一篇文章时,点赞、收藏和关注是最好的支持方式。如果你喜欢我的文章,请不要吝啬你的支持,点赞👍、收藏⭐和关注都是对我最好的鼓励。感谢你们的支持!如有问题欢迎指正!