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 ...
随机推荐
- MFC之CImageList(1)
CImageList BOOL Create( int cx, int cy, UINT nFlags, int nInitial, int nGrow ); 其中各项参数的含义为:cx定义图像的宽度 ...
- Docker 部署mysql、tomcat笔记
Docker 笔记整理 #.环境:Ubuntu 18.* #.安装 mysql 5.6.tomcat #.docker search mysql 报错:Error response from daem ...
- vue入门:(组件)
模板:(template)模板声明了数据和最终展现给用户的DOM之间的映射关系. 初始数据:(data)一个组件的初始数据状态.对于可复用的组件来说,通常是私有的状态. 接收外部参数:(props)组 ...
- webpack配置不同打包配置
生成环境与开发环境打包配置 使用package.json配置npm run开启不同的打包配置 ...webpack基本使用最后一篇博客 在上一篇博客中详细的演示了webpack开启本地服务和热更新,这 ...
- 5.Linux 软件安装管理
1.RPM包安装 (RPM会有依赖性,即安装这个包之前,需要安装某个包) 查询已安装的rpm 列表 rpm -qa | grep xx 安装rpm包 rpm -ivh rpm 包名 -i ...
- python 2.7.5 获取文本关键字符所在行
#!/usr/bin/env python #-*- coding: UTF- -*- from __future__ import print_function import time,os,sys ...
- 使用函数rand5()来实现函数rand7()
题目: 给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一样.现要求使用该函数构造函数rand7(),使函数rand7()可以随机等概率的生成1-7的整数. 思路: 很多人的第一 ...
- Rails6新特性actionable Error
视频:https://gorails.com/episodes/actionable-errors-in-rails-6?autoplay=1 这篇视频介绍了Rails6的一个新功能: actiona ...
- 下载Mybatis源码
百度搜索关键字:Mybatis 点击第二个选项,为啥不是第一个?因为卡. 打开之后,长这个样子: 点击画红圈的位置,进入github源码库: 发现,进入的太深了.点击mybatis-3,进到外层目录, ...
- BOOST 解析,修改,生成xml样例
解析XML 解析iworld XML,拿到entity和VisibleVolume的数据 int ParseiWorlds::readXML(const bpath &dir) { ptree ...