1:在数组内容中我们了解到,数组是通过指针分配到的一段额定大小的内容。同样,数组也可以包含对象。声明对象数组的形式如下:

box boxArray[5];

box boxArray2[2]={box(1,1,1),box(2,2,2)};

box boxArray3[3]={3,styleBox};

值得注意的是,第一种申请对象数组的方法必须保证类中含有默认的够好函数,否则编译器将会报错。同样,可以通过对象指针申请动态数组。例如:

box* box;

pbox=new box[n];//n为整数

同时需要确认box中含有默认构造函数。

2:代码如下:

(1)box.h

class box{
public:
//类成员变量
float m_lenth; //长
float m_width; //宽
float m_hight; //高
int Number; //流水线编号
//类成员函数
box(float lenth,float width,float hight);
box();
bool Compare(const box b) const;///第一,不希望参数box b改变,第二,不希望引用此函数来改变某一个对象
void ToCheck(); //显示当前盒子的规格
void Rebuild(float lenth,float width,float hight); //重新定义长 宽 高 };

(2)box.cpp

#include "stdafx.h"
#include <iostream>
#include "box.h"
using std::cout;
using std::endl;
box::box()
{
m_lenth =1.000f;//f是定义为浮点数类型的意思
m_width = 1.000f;
m_hight = 1.000f;
cout<<"制作的盒子长:"<<m_lenth<<"宽:"<<m_width<<"高:"<<m_hight<<endl;
}
box::box(float lenth,float width,float hight)
{
m_lenth = lenth;
m_width = width;
m_hight = hight;
cout<<"定制作的盒子长:"<<lenth<<"宽:"<<width<<"高:"<<hight<<endl;
}
bool box::Compare(const box b) const//参见const对象的内容
{ return (m_lenth == b.m_lenth)&(m_width == b.m_width)&(m_hight == b.m_hight);
}
void box::ToCheck()//显示当前盒子的规格
{
cout<<"本盒子现在长:"<<m_lenth<<"宽:"<<m_width<<"高:"<<m_hight<<endl;
}
void box::Rebuild(float lenth,float width,float hight)//重新定义长 宽 高
{
m_lenth = lenth;
m_width = width;
m_hight = hight;
}

(3)main.cpp

// 7.9.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "box.h"
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
bool check(float a,float b,float c)//自定义了一个函数
{
return (a>)&(b>)&(c>)&(a<)&(b<)&(c<);//如果a,b,c都介于0到100之间就返回1
}
int main()
{
float lenth;
float hight;
float width;
cout<<"请输入您所需要盒子,长、宽、高"<<endl;
while(cin>>lenth,cin>>hight,cin>>width,!check(lenth,width,hight))//逗号运算符是指在C语言中,多个表达式可以用逗
//号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
{
cout<<"抱歉,你所输入的规格超出我们的制作水平,请重新输入"<<endl;
}
const box styleBox(lenth,width,hight);
cout<<"请输入您的订单个数:"<<endl;
int count;
while(cin>>count,!((count>)&(count<)))//数字检查
{
if(count>)
{
cout<<"抱歉,订单数额超出生产水平,请重新输入"<<endl;
}
else{
cout<<"请确认输入的数值为正数,请重新输入"<<endl;
}
}
box* boxArray ; //定义了一个指向对象的指针,注意:此种方法要有默认的构造函数,因为上来就会来几个默认的对象,然后赋值
boxArray = new box[count]; //动态对象数组//通过对象指针申请对象数组//这个数组的名就叫boxarray
bool bOk = false; for(int i=;i<count;i++)
{
boxArray[i].Rebuild(lenth,width,hight);
boxArray[i].ToCheck();
if(styleBox.Compare(boxArray[i]))
{
cout<<"此产品符合规格"<<endl;
}
}
delete []boxArray;//删除类成员时就用这种
return ;
}

C++入门经典-例7.9-对象数组,批量化生产的更多相关文章

  1. C++入门经典-例6.12-使用数组地址将二维数组输出

    1:以a[4][3]为例 a代表二维数组的地址,通过指针运算符可以获取数组中的元素 (1)a+n代表第n行的首地址 (2)&a[0][0]既可以看作第0行0列的首地址,同样也可以被看作是二维数 ...

  2. C++入门经典-例7.8-const对象,标准尺寸

    1:当建立一个对象之后,如果不希望它的任何数据发生改变,可以将其直接声明为const对象,例如: const 类名 对象名 const对象必须初始化.我们可以调用它的数据和函数,但是不可以对他们进行修 ...

  3. C++入门经典-例6.1-一维数组元素

    1:代码如下: // 6.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  4. 算法竞赛入门经典 LA 4329(树状数组)

    题意: 一排有着不同能力值的人比赛,规定裁判的序号只能在两人之间,而且技能值也只能在两人之间 问题: <算法竞赛入门经典-训练指南>的分析: 上代码: #include<iostre ...

  5. C++入门经典-例7.6-this指针,同一个类的不同对象数据

    1:对于类的非静态成员,每个对象都有自己的一份拷贝,即每个对象都有自己的数据成员,不过成员函数却是每个对象共享的.那么调用共享的成员函数如何找到自己的数据成员呢?答案是通过类中隐藏的this指针. 2 ...

  6. C++入门经典-例6.22-字符串与数组,string类型的数组

    1:数组中存储的数据也可以是string类型的.代码如下: // 6.22.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include ...

  7. C++入门经典-例9.1-函数模板,函数模板的作用,使用数组作为模板参数

    1:函数模板不是一个实在的函数,因此编译器不能为其生成可执行的代码.定义函数模板只是一个对函数功能框架的描述,在具体执行时,将根据传递的实际参数决定其功能. 2:函数模板定义的一般形式如下: temp ...

  8. C++入门经典-例6.17-输出每行数组中的最小值

    1:代码如下: // 6.17.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using ...

  9. C++入门经典-例6.15-通过字符串函数连接两个字符数组

    1:代码如下 // 6.15.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

随机推荐

  1. 快递100API

    url:http://www.kuaidi100.com/query 拼接参数: 参数名称 参数取值 参数类型 type 快递码,请参考快递100码 String postid 快递单号 String ...

  2. mybatis批量更新表setting parameters 错误

    mybatis中想用 foreach标签 批量update set表 下面是mapper.xml <update id="updateMonitorById" paramet ...

  3. 币种大写算法(js)

    注意事项:小数精度处理问题,n*10出现精度误差,如1.88*10计算得18.799999999999997,实际想要的数据是18.8: 思路一:小数变成整数(通过字符串处理),计算后,变成小数: 思 ...

  4. 4、nfs(存储服务器)

    1.NFS基本概述 NFS是Network File System的缩写及网络文件系统.NFS的主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录. 通常中小企业首选NFS作为集群架构的存储 ...

  5. Linux系统组成和获取命令帮助4

    Linux文件系统:        1.文件名名称严格区分字符大小写        2.文件可以使用除/以外任意字符        3.文件名长度不能超过255字符        4.以.开头的文件为 ...

  6. 版本控制工具 svn 一

    一.svn 概述 1).svn的作用 1.多人协作开发:2.远程控制:3.版本控制 2).软件控制管理工具发展之路 SCM:软件配置管理,所谓的软件配置管理实际就是软件源代码的 控制与管理. CVS: ...

  7. 卸载CUDA和cuDNN

    卸载CUDA和cuDNN 1.卸载CUDA 本教程只针对对于.run方式安装的,其他的没有进行测试 打开终端,输入sudo /usr/local/cuda-10.0/bin/uninstall_cud ...

  8. Scala(二)——基础语法(与Java的区分)和函数式编程

    Scala快速入门(二) 一.键盘输入 关于基本类型的运算,以及复制运算,条件运算,运算符等知识,均和Java语言一样,这里不过多叙述. val name = StdIn.readLine() Std ...

  9. 认识并初步应用GitHub

    好好学习,天天向上 一.这是一个简单的开头 GIT的地址 https://github.com/Notexcellent GIT的用户名 Notexcxllent 学号后五位 82405 博客地址 h ...

  10. Python——列表赋值的若干用例

    原创声明:本文系博主原创文章,转载或引用请注明出处. 1. 直接赋值 >>> a = [1,2,3,4,5] >>> b = a >>> id(a ...