gpt4 book ai didi

c++ - 面向对象的设计建议

转载 作者:IT老高 更新时间:2023-10-28 22:23:02 26 4
gpt4 key购买 nike

这是我的代码:

class Soldier {
public:
Soldier(const string &name, const Gun &gun);
string getName();
private:
Gun gun;
string name;
};

class Gun {
public:
void fire();
void load(int bullets);
int getBullets();
private:
int bullets;
}

我需要通过一个 Soldier 对象调用 Gun 的所有成员函数。比如:

soldier.gun.fire();

soldier.getGun().load(15);

那么哪一个是更好的设计呢?将 gun 对象隐藏为私有(private)成员并使用 getGun() 函数访问它。还是让它成为公共(public)成员?或者我可以封装所有这些功能会使实现更加困难:

soldier.loadGun(15); // calls Gun.load()
soldier.fire(); // calls Gun.fire()

那么你觉得哪一个最好呢?

最佳答案

我会说你的第二个选择:

soldier.loadGun(15); // calls Gun.load()
soldier.fire(); // calls Gun.fire()

一开始会做更多的工作,但随着系统变得越来越复杂,你可能会发现士兵在开枪前后会想做其他事情(也许检查他们是否有足够的弹药,然后大喊“笨蛋去死! ” 在射击之前,然后在之后喃喃地说“那肯定很痛”,然后检查他们是否需要重新加载)。它还向 Soldier 类的用户隐藏了关于枪是如何精确开火的不必要的细节。

关于c++ - 面向对象的设计建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2585799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com