小样的第四次学习博客——C++之静态数据成员
声明
本人是一名大一计算机专业学生,所写内容来自我学习教材后的收获,对教材内容无意冒犯,如有,还请海涵。
参考教材:《C++面向对象程序设计》(第3版)谭浩强编著
《C++面向对象程序设计(第3版)学习辅导》谭浩强编著
私有静态数据成员
私有静态数据成员需要初始化。
私有静态数据成员是类的一部分,而不是属于类的某个特定对象的。因此,它们的初始化方式与普通数据成员不同。具体来说,对于非const类型的私有静态数据成员,它们必须在类的外部进行初始化。
私有静态数据成员的初始化是在类外部进行的,这是为了确保静态成员只被定义一次,从而避免冗余和潜在的错误。而对于const类型的私有静态数据成员,则可以在类内部直接初始化。
实例
#include<iostream>
using namespace std;
class Consume {
public:
Consume(int n, int q, double p) :num(n), quantity(q), price(p) {}; //定义构造函数初始化销货员号,销货件数,销货单价
void total(); //求总销售额的函数
double static average(); //求平均售价的函数
void static display(); //输出函数,声明为静态函数是因为sum,discount,n是静态变量,且输出函数要访问它们
private:
int num;
int quantity;
double price;
static double discount;
static double sum;
static int n;
};
double Consume::discount = 0.95; //给静态变量赋初值,并且必须在类外进行
double Consume::sum = 0.0;
int Consume::n = 0;
void Consume::total() { //求总销售额函数
float rate = 1.0;
if (quantity > 10)rate *= 0.98;
sum += quantity * price * rate * discount;
n += quantity;
}
double Consume::average() { //求平均售价函数
return(sum / n);
}
void Consume::display() {
cout << sum << endl; //输出总销售款
cout << average() << endl; //调用average函数计算并输出平均售价
}
int main() {
Consume con[3]{ //定义对象数组存储3名销货员的销货情况
Consume(101,5,23.5),
Consume(102,12,24.56),
Consume(103,100,21.5)
};
for (int i = 0; i < 3; i++) //输出
con[i].total();
Consume::display();
return 0;
}
注意:静态数据成员可用于多个对象之间的数据计算,尤其注意各种函数的访问权限问题