静态成员与常成员的使用

1、 实验目的
(1)学习静态成员的使用
(2)学习常成员的使用
(3)掌握静态数据成员与常数据成员的初始化
2、实验内容
(1)某商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,因此,商店需要记录下目前库存的货物的总重量,现在要求设计一个Goods类并使用静态成员来模拟商店货物购进和卖出的情况;
(2)为上面的Goods类添加一个常数据成员(货物名称),并对货物名称进行初始化;
(3)将前面已定义的某些成员函数改写为常成员函数,观察是否该类中所有的成员函数是否都可设定为常成员函数。

3、实验步骤
(1)添加一个头文件Goods.h来定义Goods类

#include<iostream>
using namespace std;
class Goods
{
public:
    Goods(int inBox, double inWeight);
    ~Goods();
    void Sell(int outBox, double outWeight);
    void print();
private:
    int Box;
    double weight;
    static int totalBox;
    static double totalWeight;
};

Goods::Goods(int inBox, double inWeight)
{
    Box = inBox;
    totalWeight = inWeight;
    totalBox = totalBox + inBox;
    totalWeight = totalWeight = inWeight;
}


void Goods::Sell(int outBox, double outWeight) {
    totalBox = totalBox - outBox;
    totalWeight = totalWeight - outWeight;
}

void Goods::print() {
    cout << "当前货物总箱数为:" << totalBox << "箱" << endl;
    cout << "当前货物总重量为:" << totalWeight << "kg" << endl;
}
Goods::~Goods()
{
}
int Goods::totalBox = 0;
double Goods::totalWeight = 0.0;

(2)添加一个源文件Goods.cpp来实现成员函数。
(3)在主程序中定义若干个Goods类的对象,模拟进货与卖出的过程。查看运行结果。

#include"Goods.h"
int main()
{
    Goods gd(5, 200);
    gd.Sell(2, 50);
    gd.print();
    getchar();
    return 0;
}

运行结果

(4)为Goods类添加一个常数据成员const char * name来表示货物名称,改写构造函数及主程序的调用,在构造函数的成员初始化列表中对货物名称赋初值。重新编译,观察运行结果。
这里写图片描述

(5)将前面已定义的某些成员函数改写为常成员函数,观察是否该类中所有的成员函数是否都可设定为常成员函数。
这里写图片描述

常数据成员不能更新对象的数据成员,也不能调用该类中的普通成员函数。在常成员函数中绝对不会更新数据成员的值。

发布了22 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Joki233/article/details/53365906
今日推荐