c – 类接口查询
发布时间:2020-12-16 07:05:27 所属栏目:百科 来源:网络整理
导读:我一直想知道我的游戏引擎和游戏已经使用了很长时间的设计.假设我们有一个Object类 class Object{ public: const std::string getName() { return m_name; } private: std::string m_name;} 然后,我有一个名为ObjectManager的类,它包含一个Object实例.现在,
我一直想知道我的游戏引擎和游戏已经使用了很长时间的设计.假设我们有一个Object类
class Object { public: const std::string& getName() { return m_name; } private: std::string m_name; } 然后,我有一个名为ObjectManager的类,它包含一个Object实例.现在,我一直在想我是否应该在ObjectManager中保持该实例私有并重复代码,以便它可以调用getName(),或者使Object公开,这会破坏封装的概念.你们认为哪种设计更好? 谢谢你的帮助! 解决方法
如果您的类包含其他人可以使用的对象,请将其公开.封装意味着隐藏做某事所需的变量.某些数据成员不属于此.
例: 人汤姆; tom.getEyes().getColor(); tom.getMouth().eat(tomato); tom.legs().walk(); 人可以隐藏一切,但这会很麻烦: tom.getEyesColor(); // accessor for every eye feature tom.eat(tomato); tom.walkAndEat(); // every possible combination of actions 进一步举例: grid.row(3).col(5).setText("hello"); 这里的列类可以暴露许多方法,而不必触及网格类.这是面向对象编程的美妙之处. 如果您将您的类命名为ObjectManager,我感觉它正在为其他人管理Object实例,因此您应该公开它.使用继承的另一个想法也是有效的: class ObjectManager : public Object { }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |