到目前为止,我回顾了我的代码,发现我很少写class
。或者,换句话说,我没有看到使用它们的价值。我的意思是,几乎编码中的所有内容,只需编写函数并根据函数将它们分组到不同的.h/.cpp
文件中,我就可以在不使用类的情况下解决它们。
即使在我参与了几个项目之后,我仍然感觉不到这样做的紧迫性,因为没有重大挑战,进展顺利。我主要使用C ++(有时是MATLAB)。
请注意,我确实使用了struct
,我知道结构和类对C ++没有太大的区别。但我只使用struct进行数据存储(将数据组合在一起)。数据不需要流量控制(即维护或保护内部状态的getter / setter),也不需要开始获取任何主要功能。
也许我错过了关于 OOP 的基本知识。那么我们何时应该使用类封装我们的代码?有人可以分享你的意见吗?
答案 0 :(得分:5)
在C ++中,struct
和class
只是相同,除了使用不同的默认访问修饰符。 struct
成员默认为public
,而class
成员默认为private
。如果我们将C ++中的类视为具有封装数据成员的class
和公开显示与该数据相关的功能的公共成员函数,那么以下是您想要使用类的一些好建议:
如果你只有建议1,那么你可能只想要一个结构。请参阅Classes Should Enforce Invariants。
答案 1 :(得分:4)
您可以使用大多数语言编写无类代码。在Java中,您只需使用static
方法,而不是其他任何方法。
使用C / C ++ struct
将值组绑定到一个单元中,以形成可以单独创建和操作的单个组件。
您发现需要class
es和类实例(通常是对象)的那一刻就是您在编码中成长的那一刻。使用class
,您可以将多个字段绑定在一起(与struct
s一样),但在此您也可以将method
附加到其中。您现在正在处理具有和功能结构的对象。
完成该步骤后,您会发现一个全新的编程世界,您可以将这些对象放在其他对象中,或放入queue
进行传输,或者放在map
和set
中存储,然后您发现map
和set
以及queue
本身就是一个拥有自己class
的对象。
总而言之 - 与process
合作就像用沙子建造房屋一样。与struct
合作正在用棍棒建造你的房子。使用class
es允许你实例化object
并将它们作为实体操纵 - 用石头建造你的房子 - 然后你可以离开你到目前为止工作的过程并开始考虑你系统的架构。