博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++实践参考:警察与厨师
阅读量:7171 次
发布时间:2019-06-29

本文共 1432 字,大约阅读时间需要 4 分钟。

【项目-警察和厨师】

(1)根据下面的类图,定义各个类:
这里写图片描述
要求:
各个成员函数,只要输出相关的信息即可,暂不深究其业务功能
请为各个类增加构造函数
在实现中,可以增加需要的其他函数
自行编制main函数,完成初步的测试

[参考解答1]

#include 
using namespace std;class Person{public: Person(int, string); void action(); string getName() { return name; }private: int age; string name;};Person::Person(int a, string n):age(a), name(n) {}void Person::action(){ cout<
<<" do some action"<

(2)下面的类图,为Polic类和Cook类增加了对象成员,请扩充代码,完成上述各项要求

这里写图片描述
[参考解答1]

#include 
using namespace std;class Person{public: Person(int, string); void action(); string getName() { return name; }private: int age; string name;};Person::Person(int a, string n):age(a), name(n) {}void Person::action(){ cout<
<<" do some action"<

评价:

- 这些代码是完成是题目的要求,但是,并不好。
- 每个构造函数带上一长串的参数,难写,难看,这本身就是质量问题。
- 这种写法,也根本未体现对象的“封装”——都是一串散乱的基本类型数据在工作。
- 我们希望看到jack警察的上司就是一个人,john厨师的保卫者,就是一个警察。
- 需要做的是,利用对象作为构造函数的参数,使结构清晰。
- 当然,这时需要增加相关的复制构造函数了。

[参考解答2]

#include 
using namespace std;class Person{public: Person(int, string); void action(); string getName() { return name; }private: int age; string name;};Person::Person(int a, string n):age(a), name(n) {}void Person::action(){ cout<
<<" do some action"<

评论:

这样做,是不是在逻辑上很清楚了?
Person、Police类中该定义复制构造函数,在这里没有写,用其默认复制构造函数了。相关类中没有定义指针型成员,不必要深复制,所以,可以使用默认复制构造函数。

你可能感兴趣的文章
springboot的自动配置
查看>>
【Joomla】TemplateMonster 模板安装
查看>>
01.Redis安装
查看>>
Objective-C Memory Management
查看>>
100211D Police Cities
查看>>
存储过程分页探究
查看>>
补充属性及标签
查看>>
涅槃蜕变180°转身计划 2013.5.14--2013.12.31
查看>>
ZJUT OJ 1004
查看>>
Android 蓝牙的常用操作
查看>>
HDU 4780 Candy Factory
查看>>
java volatile的一个验证反例(转)
查看>>
网络名词解释
查看>>
JSch
查看>>
POJ 3254 Corn Fields(状态压缩DP)
查看>>
SAP OLE中常用的一些方法和属性
查看>>
C#正则表达式匹配“换行\回车”等问题
查看>>
批量SQL
查看>>
给TextView 加上圆角和边框
查看>>
Android项目导入Eclipse出现错误解决办法
查看>>