在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;
}