C++ 类的抽象初练
/*
某商店经销一种货物,货物的购进和卖出以箱为单位,各箱的重量不一样,
因此商店需要目前库存的总重量。
现在用c++模拟商店货物购进和卖出的情况 */ #include<iostream>
using namespace std; //货物类
class Goods{
public:
Goods(int w=){
this->weight = w;
}
int GetW(){
return weight;
}
Goods *next;
private:
//重量
int weight;
}; //商店类
class Shop{
public:
Shop(int s=){
this->weights = s;
pHead = NULL;
}
~Shop(){
if (pHead!=NULL)
{
Goods *pCurrent = pHead;
Goods *pNext = NULL;
while (pCurrent){
pNext = pCurrent->next;
delete pCurrent;
pCurrent = NULL;
pCurrent = pNext;
}
}
weights = ;
}
//卖出
void SellOut(){
if (pHead==NULL)
{
cout << "商店里已经没有货物了!" << endl;
}
else{
//队列 先进先出
Goods *pCurrent = pHead;
pHead = pHead->next;
delete pCurrent;
}
}
//购进
void Purchase(Goods *&pin){
if (pHead==NULL)
{
//插入第一箱货物
pHead = pin;
weights += pin->GetW();
}
else{
Goods *pCurrent = pHead;
while (pCurrent->next){
pCurrent = pCurrent->next;
}
pCurrent->next = pin;
weights += pin->GetW();
}
}
//查询货物重量
int GetWeight(){
return weights;
}
private:
int weights;
Goods *pHead;
}; void protectA(){
Shop *sp = new Shop();
int indexover = ;
while (indexover){
int num = ;
int w = ;
cout << "请输入操作:" << endl;
cout << "1购进货物" << endl;
cout << "2卖出货物" << endl;
cout << "3查看现有货物重量" << endl;
cout << "按任意键退出" << endl;
cin >> num;
switch (num)
{
case :
cout << "请输入货物的重量" << endl;
//备注:在c++中不可以在case语句里定义任意变量,如果非要定义,请外面套上大括号{}
//int ss = 0;
//报错 : error C2360: “ss”的初始化操作由“case”标签跳过
{
cin >> w;
Goods * g1 = new Goods(w);
sp->Purchase(g1);
}
break;
case :
{
sp->SellOut();
}
break;
case :
cout << "现有货物的重量是" << sp->GetWeight() << endl;
break;
default:
indexover = ;
break;
}
}
if (sp!=NULL)
{
delete sp;
}
}
void main(){
protectA();
system("pause");
}
C++ 类的抽象初练的更多相关文章
- 抽象鸡类 abstract(抽象) base(基础) class(类型)
# --> ''' class interface 接口: 建立关联的桥梁, 方便管理代码 (python中没有接口语法) 接口类: 用来定义功能的类 为继承它的子类提供功能 该类的功能法方法一 ...
- 创建一个抽象的员工类, 抽象开发累继承员工类,JavaEE ,和安卓继承开发类在测试类中进行测试
/* 1 定义一个员工类 所有的子类都抽取(抽象类) Employee 属性:姓名 工号(生成get set ) 方法:工作 抽象 2 定义一个研 ...
- python(七):元类与抽象基类
一.实例创建 在创建实例时,调用__new__方法和__init__方法,这两个方法在没有定义时,是自动调用了object来实现的.python3默认创建的类是继承了object. class A(o ...
- Python 中的类与对象 初认识
一:类的声明 1类的关键字: 从第一天第一个项目起我们就接触过关键字,比如False True is not None return for while elif else import等等,这是语言 ...
- C# 类 (7) - 抽象 Abstract
Abstract 抽象类,关键字Abstract ,最典型的应用就是在 继承机制里 作为base类,抽象类是不能被实例化的(前面说的static 类也不能被实例化)它必须作为 基类,被别人继承,然后必 ...
- UE4开发神秘海域类游戏原型 初阶(二):动画资源的整合
前一篇已经确定神海类游戏原型的目标,首先要做的就是3C's(Character, Controls, Camera)的开发. UE4的3C's的程序部分开发主要也就是基于他的GamePlay Fr ...
- 类,抽象基类,接口类三者间的区别与联系(C++)
结构上的区别: 普通类:数据+方法+实现 抽象类:数据+方法(一定包含虚方法n>=1)+部分方法的实现 接口类:方法(纯虚方法) http://www.cnblogs.com/Tris-wu/p ...
- 三分初练QAQ
求凸函数的极值的一般方法是三分 三分的思想大概是这样的: 例如我们要求下凸函数的极值 在区间[L,R]上, 我们定义m1为区间的第一个三等分点 定义m2为区间的第二个三等分点 设函数值为F(x) 则若 ...
- 操作数据库的时候,使用自带的DbProviderFactory类 (涉及抽象工厂和工厂方法)
微软自带的DbProviderFactory https://msdn.microsoft.com/en-us/library/system.data.common.dbproviderfactory ...
随机推荐
- Python 面向对象编程基础
Python 面向对象编程基础 虽然Pthon是解释性语言,但是Pthon可以进行面向对象开发,小到 脚本程序,大到3D游戏,Python都可以做到. 一类: 语法: class 类名: 类属性,方法 ...
- TP框架M方法 create方法丢失字段问题
TP框架M方法 create方法丢失字段问题! thinkphp框架M方法 create方法丢失字段问题! thinkphp框架M方法 add方法字段丢失问题! 数据库 表新增了字段,用create方 ...
- TP框架ajax U方法不解析怎么办?
TP框架中ajax U方法不解析 ajax U方法不解析 ajax url不解析 问题: 造成问题原因: Js 存在单独的 js文件中和html分离了.造成不解析! 解决方法: 方法一:将js放到ht ...
- 转:介绍shell_notifyicon,SendMessage,CallWindowProc,GetWindowLong,SetWindowLong的用法
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA& ...
- LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror
本定义 功能:打开一个动态链接库 包含头文件: #include <dlfcn.h> 函数定义: void * dlopen( const char * pathname, int mod ...
- 转:sock_ev——linux平台socket事件框架(logTrace) .
写代码要有调试log,采用syslog的输出:一般会输出到"/var/log/messages" /**************************************** ...
- C++ bool和string转换
直接贴代码吧.用g++能够编译.測试ok #include <iostream> #include <sstream> using namespace std; int mai ...
- sqlconnection 调用webservice服务
package cn.itcast.service.urlconnection; import java.io.InputStream; import java.io.OutputStream; im ...
- php.ini中的pcre
当页面代码没有任何问题,也没有报错.但是页面的循环很多,请求导致开销很大的时候,有可能要改php.ini中的pcre部分. [Pcre]pcre.recursion_limit=-1pcre.back ...
- sqlserver学习笔记(五)—— 查询
查询的基本语法结构: select 列名/* from 表名 [where 限制条件] [order by 排序] 1.查询全部的行和列: select * from 表名 2.查询部分行和列:(部分 ...