静态数据成员,静态成员函数
静态数据成员
只有类声明,没有定义对象,则并不会给数据成员分配内存。但是会给static 数据成员分配内存,且不在任一对象内存空间之中,而是单独开辟一段空间,所有的对象都访问同一地址。直到程序结束才会释放内存。
且只能在类外初始化,类似全局变量,不能在main或者其他函数中初始化(初始化引用时,无论是public 或者是private都可以。public:static int a 数据成员可以在类外直接引用bbox::a;
#include <iostream>
using namespace std;
class student {
public:
static int shu;//静态数据成员,只能在类外赋值
int han;
public:
student(int x) {
shu = x;
han = 0;
}
student(int x, int y) : han(y) {};
void output() const {
cout << shu << " " << han;
};
};
void func2(const student *p )
{
//
(*p).shu=18;
(*p).output();
}
int main() {
student s2(560);
student ::shu=56;
return 0;
}
静态成员函数
不能访问非static 数据成员;只能访问static 数据成员
#include <bits/stdc++.h>
using namespace std;
int i=1;
class student {
int num1;
int num2;
static int c;
public:
static int aver;
void input() {
cin >> num1 >> num2;
}
void ca()
{
aver+=(num2+num1);
}
};
int student :: c=0;
int student::aver = 0;
int main() {
student stu[5];
student *p = stu;
int i = 1;
for (p, i; p < stu + 5; p++, i++) {
p->input();
p->ca();
}
cout<<student::aver;
return 0;
}
对象数组初始化
//
student stu5[2]={
student(12,45),
student(56,45)
};