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. Pytorch中nn.Conv2d的用法

    Pytorch中nn.Conv2d的用法 nn.Conv2d是二维卷积方法,相对应的还有一维卷积方法nn.Conv1d,常用于文本数据的处理,而nn.Conv2d一般用于二维图像. 先看一下接口定义: ...

  2. sql server 2012使用新特性offset和fetch next完成分页操作

    1 select * from HumanResources.Department order by DepartmentID offset rows fetch next rows only; of ...

  3. Redis-Set常用命令

    Redis-Set常用命令 Set与List的区别在于,Set保存的队列数据是不重复的,且无序 sadd key value- 在指定key对应的集合中添加 value集合,如果key不存在,即新创建 ...

  4. 第十章、random模块

    目录 第十章.random模块 第十章.random模块 #随机生成0-1之间的小数 import random print(random.random()) print(random.randint ...

  5. (备忘)Java数据类型中String、Integer、int相互间的转换

    1.Integer转换成int的方法 Integer i; int k = i.intValue();即Integer.intValue(); 2.int转换成Integer int i; Integ ...

  6. Git学习笔记(2)-Eclipse中Git插件使用

    目前我使用的Eclipse luna版本中已经集成了git插件,这里就不介绍如何安装Git插件了,不懂可以看其他的博客. 上篇笔记介绍了Git的基本指令,实际开发中我基本都使用eclipse插件进行代 ...

  7. TF_RNNCell

    参考:链接. RNNCell BasicRNNCell GRUCell BasicLSTMCell LSTMCell MultiRNNCell 抽象类RNNCell 所有的rnncell均继承于RNN ...

  8. BPR贝叶斯个性化排序算法

    全序关系:集合中的任两个元素之间都可以比较的关系.

  9. MyBatis: Invalid bound statement (not found)错误的可能原因

    MyBatis: Invalid bound statement (not found)错误的可能原因 其他原因导致此问题解决参考: 1.检查 xml 文件所在 package 名称是否和 Mappe ...

  10. Java 实现的 简单WordCount功能

    githup 链接:https://gitee.com/iy2524/WordCount.git PSP表格  psp2.1  psp阶段 估计耗时(分钟)  实际耗时(分钟) Planning  计 ...