C++静态成员与常成员的使用

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

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

#includeusing 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 

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

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

登录后复制

2016.jpg

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

立即学习“C++免费学习笔记(深入)”;

2017.jpg

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

2018.jpg

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2445744.html

(0)
上一篇 2025年3月3日 16:13:25
下一篇 2025年3月3日 16:13:44

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 子对话框的创建与销毁

    1.显示对话框 1.1显示模式对话框: CDialogDemo dlg;dlg.DoModal(); 登录后复制 1.2 显示非模式对话框: CDialogDemo *dlg=new CDialogDemo(this); dlg->C…

    编程技术 2025年3月3日
    000
  • 用C++对C++语法格式进行分析

    前言 最近c++项目需要用到脚本,这就关系到如何绑定对象到脚本运行环境。因使用到多套脚本语言,所以现有的绑定技术,都不能满足需求。所以只能寻求解析c++的头文件,再根据描述进行绑定。起初发现boost有一套,但boost实在太臃肿了,对项目…

    编程技术 2025年3月3日
    200
  • C# 如何调用 C++ DLL中的函数接口和回调函数

    1、c#中大部分基本数据类型都和c++的基本数据类型相同,因此基本数据类型的转换比较简单,需要注意的就是字节大小。 2、c++数组和c#的数组转换需要注意的就是需要注意,需要增加声明如[marshalas(unmanagedtype.byv…

    编程技术 2025年3月3日
    200
  • c++中向任意目录下写文件

    今天遇到了在c盘的子目录下写文件出错的事情,最中自己实验后解决。小小记录一下。 代码如下: #include#include#include main(){ int data[35]; int n=35,temp; for(int i=0;…

    2025年3月3日
    200
  • C#实现一个最简单的HTTP服务器

     简介   本文用c#实现了一个最简单的http服务器类,你可以将它嵌入到自己的项目中,或者也可以阅读代码来学习关于http协议的知识。  背景   高性能的WEB应用一般都架设在强大的WEB服务器上,例如IIS, Apache, 和Tom…

    编程技术 2025年3月3日
    200
  • C# 程序员最常犯的 10 个错误

     关于C#   c#是达成微软公共语言运行库(clr)的少数语言中的一种。达成clr的语言可以受益于其带来的特性,如跨语言集成、异常处理、安全性增强、部件组合的简易模型以及调试和分析服务。作为现代的clr语言,c#是应用最为广泛的,其应用场…

    编程技术 2025年3月3日
    200
  • C#的未来计划

     在ndc london上,mads torgersen提出了对未来c#语言的的计划。需要注意的是,这些只是计划,不会保证在哪个版本发布。damien guard对这些建议进行了总结和简要的分析,我们在此为您挑选了其中的一些内容。  只读属…

    编程技术 2025年3月3日
    200
  • C# 的三种序列化方法

      序列化是将一个对象转换成字节流以达到将其长期保存在内存、数据库或文件中的处理过程。它的主要目的是保存对象的状态以便以后需要的时候使用。与其相反的过程叫做反序列化。   序列化一个对象   为了序列化一个对象,我们需要一个被序列化的对象,…

    编程技术 2025年3月3日
    200
  • 理解模型,视图和控制器(C#,asp.net)

     这篇文章向你提供asp.net mvc 模型,视图和控制的高度概览。换句话说,解释一下asp.net mvc中的 ‘m’, ‘v’, 和 ‘c’。   看完这篇文章以后,你应该就能理解ASP.NET MVC的不同部分是如何共同工作的。而且…

    2025年3月3日 编程技术
    200
  • 能让你成为更优秀程序员的10个C语言资源

    一些人觉得编程无聊,一些人觉得它很好玩。但每个程序员都必须紧跟编程语言的潮流。大多数程序员都是从c开始学习编程的,因为c是用来写操作系统、应用程序最常用的语言。 C编程笔记 这些是华盛顿实验学院C编程入门课的部分笔记。它们是以《C程序设计语…

    编程技术 2025年3月3日
    200

发表回复

登录后才能评论