C++入门经典-例7.9-对象数组,批量化生产
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-对象数组,批量化生产的更多相关文章
- C++入门经典-例6.12-使用数组地址将二维数组输出
1:以a[4][3]为例 a代表二维数组的地址,通过指针运算符可以获取数组中的元素 (1)a+n代表第n行的首地址 (2)&a[0][0]既可以看作第0行0列的首地址,同样也可以被看作是二维数 ...
- C++入门经典-例7.8-const对象,标准尺寸
1:当建立一个对象之后,如果不希望它的任何数据发生改变,可以将其直接声明为const对象,例如: const 类名 对象名 const对象必须初始化.我们可以调用它的数据和函数,但是不可以对他们进行修 ...
- C++入门经典-例6.1-一维数组元素
1:代码如下: // 6.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...
- 算法竞赛入门经典 LA 4329(树状数组)
题意: 一排有着不同能力值的人比赛,规定裁判的序号只能在两人之间,而且技能值也只能在两人之间 问题: <算法竞赛入门经典-训练指南>的分析: 上代码: #include<iostre ...
- C++入门经典-例7.6-this指针,同一个类的不同对象数据
1:对于类的非静态成员,每个对象都有自己的一份拷贝,即每个对象都有自己的数据成员,不过成员函数却是每个对象共享的.那么调用共享的成员函数如何找到自己的数据成员呢?答案是通过类中隐藏的this指针. 2 ...
- C++入门经典-例6.22-字符串与数组,string类型的数组
1:数组中存储的数据也可以是string类型的.代码如下: // 6.22.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include ...
- C++入门经典-例9.1-函数模板,函数模板的作用,使用数组作为模板参数
1:函数模板不是一个实在的函数,因此编译器不能为其生成可执行的代码.定义函数模板只是一个对函数功能框架的描述,在具体执行时,将根据传递的实际参数决定其功能. 2:函数模板定义的一般形式如下: temp ...
- C++入门经典-例6.17-输出每行数组中的最小值
1:代码如下: // 6.17.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using ...
- C++入门经典-例6.15-通过字符串函数连接两个字符数组
1:代码如下 // 6.15.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...
随机推荐
- 利用Cmake 将最新版本OBS编译成windows版本。
准备工作: 1. VS2013 的最新更新版或者VS2015 2. QT Creater 5.7 https://www.qt.io/ 3. CMake (cmake-gui) 4. obs 依 ...
- Java程序员转行大数据的优势
大数据时代,中国IT环境也将面临重新洗牌,不仅仅是企业,更是程序员们转型可遇而不可求的机遇. 国内大多数大型互联网公司的程序员被称作研发工程师,但实际上国内几乎没有研发项目,只能叫做开发.开发程序员的 ...
- 解决vs code编写python输出中文乱码问题
环境: win7 vscode 1.37.0 插件: python Code Runner 乱码问题: 创建一个python文件,运行如下代码,打印显示乱码.: 解决乱码步骤: Ctrl+Shift+ ...
- Git——文件初始化及设置签名
1. 本地库初始化 命令: git init 效果:
- 关于SQL查询某年数据 和DATEPART 函数的使用
数据库查询某年数据(sql server)select *from 表名 where YEAR(存时间的字段名) =某年select *from News where YEAR(addDate) =2 ...
- Fescar锁和隔离级别的理解
前几天夜里,我老大发我一篇文章说阿里的GTS开源了. 因为一直对分布式事务比较感兴趣,立马pull了代码,进行阅读.基本的原理,实现方案我就不一一细化了,详细见官方文档(写的很棒,点赞). 在fesc ...
- MySQL增删改查语句
创建数据库:CREATE DATABASE 数据库名; 创建数据表:CREATE TABLE table_name (column_name column_type); 插入数据:INSERT INT ...
- windows 下 node 入门
node js node -v npm -v nvm v nvm list npm install * -g npm install express -g npm install -g expres ...
- fastadmin 列表展示时字段值截取
{field: '字段名', title: __('lang中的语言名'),formatter:function(value,row,index){ value=value?value:''; var ...
- bisect:维护一个有序的列表
介绍 bisect模块实现了一个算法来向列表中插入元素,同时仍然保证列表有序 有序插入 import bisect ''' 可以使用bisect.insort向一个列表中插入元素 ''' values ...