c++新手写的代码,求大神指点!

meaisu 2014-05-08 06:38:27
#include <iostream>
#include <string>

using namespace std;
//飞机颜色、枚举型
enum fjYanse{ysWhite,ysBlue,ysGray,ysRed};
//飞机状态
enum fjZht{ztWz,ztTz,ztFx};

//飞机
class Feiji
{
private:
fjYanse color;//飞机颜色
fjZht zht;//飞机状态
int renshu=0;//载客人数
protected:
public:
Feiji(fjYanse ys)
{
color=ys;
string ysstr;
switch(color)
{
case ysWhite:
ysstr="白色";
break;
case ysBlue:
ysstr="蓝色";
break;
case ysGray:
ysstr="灰色";
break;
case ysRed:
ysstr="灰色";
break;
default:
ysstr="颜色未知,可能是混合色";
}
cout<<"飞机 已制造..."<<"颜色:"<<ysstr<<endl;
}
~Feiji()
{
if(zht==ztFx)
{
cout<<"飞机在空中炸毁"<<endl;
}
else
{
cout<<"飞机 被炸毁"<<endl;
}
}
//起飞
virtual void Qifei()
{
if(renshu<=0){
cout<<"干嘛?这是要搞无人飞行啊,技术还没达到呢!"<<endl;
return;
}
if(zht=ztFx)
{
cout<<"飞机正在飞行,还要飞到哪里去?要飞的找不到么?"<<endl;
return;
}
zht=ztFx;
cout<<"飞机 起飞...,载人:"<<renshu<<endl;
}
//降落
virtual void Jiangluo()
{
zht=ztTz;
cout<<"飞机 降落"<<endl;
}
//进人,超载返回false
virtual bool Jinren()
{
if(zht==ztFx)
{
throw zht;
}
cout<<"飞机进1个人"<<endl;
this->renshu++;
return true;
}
//现有人数
int Renshu()
{
return renshu;
}
bool zzFeixing()
{
return (zht==ztFx);
}
};

//喷气飞机,继承自Feiji
class Pqfj:public Feiji
{
private:
int edzkrs=0;//额定载客
public:
Pqfj(fjYanse ys,int edzk):Feiji(ys)
{
edzkrs=edzk;
}
~Pqfj()
{
//
}
void Qifei()
{
Feiji::Qifei();
}
void Jiangluo()
{
Feiji::Jiangluo();
}
bool Jinren()
{
if(zzFeixing())
{
cout<<"飞机正在飞行,哪能进人啊?你是超人????"<<endl;
return false;
}
if(Renshu()>edzkrs)
{
cout<<"警告:飞机超载,额定人数为:"<<edzkrs<<endl;
return false;
}
return Feiji::Jinren();
}
bool Jinren(int n)
{
if(Renshu()+n>edzkrs)
{
cout<<"不要挤,进不了这么多人,超载会被罚款的"<<endl;
return false;
}
for(int i=1;i<=n;i++)
{
if(!this->Jinren())
{
return false;
}
}
}
};


int main()
{
Pqfj* pqfj=new Pqfj(ysBlue,20);//生产飞机,额定载客20
pqfj->Jinren();//进1个人
pqfj->Jinren(3);//进3个人
pqfj->Jinren(30);//进30个人
pqfj->Qifei();//起飞
pqfj->Jinren(2);//飞行状态进人
pqfj->Jiangluo();//降落
delete pqfj;//炸毁飞机
return 0;
}


...全文
833 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
meaisu 2014-05-09
  • 打赏
  • 举报
回复
我是delphi习惯了,所以不知道c++上面的很多规范,所以前来问问,各位再给说说除了命名不规范之外还有那些地方不对、或者不合理的。 ps:成员变量应该放在private下面吗?这个类里面,我个人没觉得那里需要常量,给指点指点。
Symfund 2014-05-09
  • 打赏
  • 举报
回复
哈哈:dafeiji 是不是 handjob的意思?
meaisu 2014-05-09
  • 打赏
  • 举报
回复
引用 2 楼 ye667788 的回复:
1.楼主没学过英语吗?Feiji难道就不会用Plane来表示吗?代码里到处都是汉语拼音 2.楼主的成员函数都是内联函数……………… 3.某些函数应该加上const 4.逻辑抽象上不是很好
函数加上const,你是指像
int Renshu()
        {
            return renshu;
        }
这个函数吗? 内联函数式什么意思? 我只是为了好理解才这么写,英语水平的确也不行,主要目的是为了验证从书上看到的东西,可能实际不会这么命名。
cqmomo1 2014-05-08
  • 打赏
  • 举报
回复
代码的命名问题。
buyong 2014-05-08
  • 打赏
  • 举报
回复
挺好玩的不过命名不规范,看不出常量,成员变量,输入参数等区别,拼音首字母等也不好懂。
没事人 2014-05-08
  • 打赏
  • 举报
回复
我挺支持楼主的做法的feiji,既然可以正常运行那还问什么问题啊
ye667788 2014-05-08
  • 打赏
  • 举报
回复
1.楼主没学过英语吗?Feiji难道就不会用Plane来表示吗?代码里到处都是汉语拼音 2.楼主的成员函数都是内联函数……………… 3.某些函数应该加上const 4.逻辑抽象上不是很好
meaisu 2014-05-08
  • 打赏
  • 举报
回复
请大神们指点下,这个两个类的设计有什么问题没有,还有就是哪里有问题,本机测试可正常运行。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧