企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 静态数据成员 ## 特点 * 静态数据成员是被该类的所有成员共享的,不属于某个对象 * 为对象创建空间时,静态数据成员分配空间在数据区,其他成员分配在栈区 * 分配时机提前,类定义好了,该静态数据成员就分配好了 * 静态数据成员在类体外初始化,函数体之外初始化 ## 声明 static 类型 名称 ## 例子 ~~~ #include <iostream> using namespace std; ​ class Box { public:   Box(int,int);   int volume( );   static int height;               //把height定义为公用的静态的数据成员   int width;   int length; }; ​ Box∷Box(int w,int len)         //通过构造函数对width和length赋初值 { width=w;   length=len; } ​ int Box∷volume( ) { return(height*width*length); } ​ int Box∷height=10; //对静态数据成员height初始化 ​ int main( ) { Box a(15,20),b(20,30);   cout<<a.height<<endl;           //通过对象名a引用静态数据成员   cout<<b.height<<endl;           //通过对象名b引用静态数据成员   cout<<Box∷height<<endl;         //通过类名引用静态数据成员   cout<<a.volume( )<<endl;         //调用volume函数,计算体积,输出结果 } ~~~ # 静态成员函数 ## 声明 static 类型 函数名(); 为了更方便的访问静态数据成员 ## 例子 ~~~ include <iostream> using namespace std; ​ class Student                   //定义Student类 { public:   Student(int n,int a,float s):num(n),age(a),score(s){ }//定义构造函数       void total( );       static float average( );     //声明静态成员函数   private:   int num;   int age;   float score;   static float sum;           //静态数据成员   static int count;           //静态数据成员 }; ​ void Student∷total( ) //定义非静态成员函数 { sum+=score;                           //累加总分   count++;                               //累计已统计的人数 } ​ float Student∷average( ) //定义静态成员函数 { return(sum/count); } ​ float Student∷sum=0;         //对静态数据成员初始化 int Student∷count=0;       //对静态数据成员初始化 ​ int main( ) { Student stud[3]={       //定义对象数组并初始化   Student(1001,18,70),   Student(1002,19,78),   Student(1005,20,98) }; int n;   cout<<″please input the number of students:″;   cin>>n;     //输入需要求前面多少名学生的平均成绩   for(int i=0;i<n;i++) //调用3次total函数   stud[i].total( );   cout<<″the average score of ″<<n   <<″ students is ″       <<Student∷average( ) //调用静态成员函数       <<endl;   return 0; } ~~~