C++靜態成員與常成員的使用

來源:互聯網
上載者:User
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)將前面已定義的某些成員函數改寫為常成員函數,觀察是否該類中所有的成員函數是否都可設定為常成員函數。

常資料成員不能更新對象的資料成員,也不能調用該類中的普通成員函數。在常成員函數中絕對不會更新資料成員的值。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.