静态成员和函数的初步运用

2021-09-07 11:07:34 浏览数 (1)

问题:

商店销售某一商品,每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,一次购10件以上者,还可以享受9.8折优惠。现已知当天m个销货员销售情况为

代码语言:javascript复制
     销货员号(num)            销货件数(quantity)       销货单价(price)

           101                     5                         23.5

           102                     12                        24.56

           103                     100                       21.5 

请编写程序,计算出当日此商品的总销售款sum以及每件商品的平均售价。要求用静态数据成员和静态成员函数。 (提示: 将折扣discount,总销售款sum和商品销售总件数n声明为静态数据成员,再定义静态成员函数average(求平均售价)和display(输出结果)。

实例:
代码语言:javascript复制
#include<iostream>
using namespace std;
class shop
{
public:
    static void average();
    void Personal();
    static void dispaly();
    shop(){num=0;n1=0;price=0;}
    shop(int hao,int nn,float pp)
    {
        num=hao;
        n1=nn;
        price=pp;
    }
private:
    static float discount;//折扣
    static float sum;//总销售额
    static int n;//总销售个数
    static float aver;//平均单价
    float price;//售货单价
    float s;//个人销售额
    int n1;//个人销售个数
    int num;//个人号码
};
float shop::discount=1;
float shop::sum=0;
float shop::aver=0;
int shop::n=0;
void shop::Personal()
{
    s=n1*price*discount;
    if(n1>10)
    s=s*0.98;
    sum =s;
    n =n1;
    cout<<num<<"销售"<<s<<endl;
}
void shop::average()
{
    aver=sum/n;

}
void shop::dispaly()
{
    cout<<"单价为"<<aver<<"总销售额为"<<sum<<endl;
}
int main()
{
    shop a[3]=
    {
        shop(101,5,23.5),
        shop(102,12,24.56),
        shop(103,100,21.5)
    };
    a[0].Personal();
    a[1].Personal();
    a[2].Personal();
    shop::average();
    shop::dispaly();
}

运行结果:

代码语言:javascript复制
101销售117.5
102销售288.826
103销售2107
单价为21.4814总销售额为2513.33
备注:

静态函数是类的一部分不是对象的一部分。 静态成员没有this指针。 静态成员必须进行初始化 初始化方式在类外进行 例如:int shop::n=0; 静态函数引用可以通过shop::dispaly();形式,也可以通过a[0].dispaly();,但是只是借用了a[0]的类,而不是属于该对象。

0 人点赞