设计一个士兵开枪的简单工程。
该工程包含两个对象 士兵 和 枪 ,很显然,枪是士兵的使用对象。故枪是士兵的一个成员变量。(枪是士兵的一个组件)
枪与士兵之间有信息传递,士兵对枪的输入,由士兵调用枪的函数并给定函数输入值实现。枪对士兵回传信息,通过函数返回值实行。
关于士兵设个类,有一个元素是 枪的指针变量。
因为这个成员指针变量的存在,所以构造函数和析构函数,都要对这个指针进行处理。初始化时,置空操作,析构时,要进行判断,当不为空时,delete它,并且置空,总之,要保证它为空。
既然有了Gun * _ptr_gun;这个成员变量,就要定义一个public类型的函数,接受外部参数并进行赋值操作。
注意,枪的加子弹和射击,都是士兵操作枪完成的,动作的发出者是士兵,执行者是枪。
原有的函数没有返回值,改成这样就合理了。
经验:类的成员数据一般是私有的,类的函数一般是公有的。
上图中,sanduo.addGun(new Gun("AK47"));这句的写法很新颖,值得收藏。
set()这行命令,是增加编译优化和提示选项