В классе C++ статический член — это член класса с ключевым словом static перед оператором объявления.
\
Используйте преимущества:
Область действия находится в пределах области действия класса, что позволяет избежать конфликтов имен с членами других классов или глобальной областью действия;
Может быть закрытым членом, но не глобальным объектом;
Сделайте так, чтобы статические члены были связаны с определенным классом, и смысл был ясен;
Может использоваться в качестве аргумента по умолчанию, но обычные члены данных не могут.
Простое использование следующим образом:
\
class NBAstar{
public:
static double salary(){
return salarybase;
}//获取联盟平均薪酬
static void salary(double);//更新联盟平均薪酬
private:
vector<std::string> star;
// static int sum=25;//不是静态常量成员不能初始化
static double salarybase;//超级巨星平均基本年薪,平均此数是共享的,不属于任何一个明星
static double initsalary();//尽管private,初始化仍可在函数外调用
static const int size=20;//设联盟只能前20名球员作为超巨
};
//在类外定义静态成员
double NBAstar::initsalary(){
salarybase=1000.5;
}
void NBAstar::salary(double n){
salarybase=n;
}
\
\
#include <iostream>
#include<vector>
using namespace std;
#include"NBA_star.h"
double NBAstar::salarybase=initsalary();
int main() {
double wage;
// wage=NBAstar::salary();//法1访问静态成员
NBAstar kobe;
// wage=kobe.salary();//法2访问静态成员
NBAstar *lbj=&kobe;
wage=lbj->salary();//法3访问静态成员
cout<<"10年前NBA超级巨星年薪(万美元):"<<wage<<endl;
NBAstar::salary(2000.8);
wage=NBAstar::salary();
cout<<"现如今NBA超级巨星年薪(万美元):"<<wage<<endl;
return 0;
}
\