小样的学习博客4——C++之静态数据成员

小样的第四次学习博客——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;
}

注意:静态数据成员可用于多个对象之间的数据计算,尤其注意各种函数的访问权限问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值