有人可以通过一些很好的例子来清楚地解释我c ++类是如何有用的,以及为什么它是一个很好的编程实践。我阅读了很多关于类的内容,使用某些类在c ++中进行了一些编程,但我仍然不清楚为什么需要类,以及它们如何使代码更加健壮和可读。
感谢!!!!!
答案 0 :(得分:2)
到那时你应该明白课程是什么。
答案 1 :(得分:2)
当您键入脚本或20行代码或100行代码时,这没什么大不了的。
当你获得数百万时,你开始需要一种实际可视化代码的方法。您需要能够谈论不同的部分以及它们如何相互作用。
当你看一个漫长的程序时,它是如何组织的?当你有20个函数时,哪些函数对应于哪些数据?现在记录并记住它,以便下次查看代码时,您将能够回到原来的位置。
对象允许您将功能与其相关的数据进行分组。它可以让您快速找到所需的功能。一旦你习惯了它,很难想象为什么没有它就会编码。我不确定你是如何绘制一个设计来向其他人展示它而没有OO - 流程图?真的?
如果您设计非OO代码非常好用私有变量(这个文件专用)和与该数据相关的函数,您可以获得一些组织效果,但它很混乱,并且有很多开销。此外,对于那些不完全“获取”OO的人来说,将整个代码库发送到代码地狱非常容易。
这是组织代码和数据的一种非常舒适,逻辑合理的方法。
答案 2 :(得分:1)
在游戏中,你有一个枪类。它有一定数量的弹药。你想确保在开枪时减去一颗子弹。重新加载时,剪辑大小会重新添加到弹药中。
最重要的是,您希望正确维护“弹药”数量。通过 encapsulating 构成枪支的所有变量范围到枪支实例。枪的使用者不会考虑太多,也不必担心破坏/搞砸弹药(或其他)值。
class CGun
{
private:
unsigned int ammo;
public:
CGun();
void Reload()
{
if (ammo == 0)
{
ammo += 40/*40 bullets per clip*/
}
}
void Fire()
{
if (ammo > 0)
{
--ammo;
}
}
};
现在,您可以非常轻松,安全地使用此对象,而无需担心损坏基础数据。
int main()
{
CGun aGun;
aGun.Fire();
}
答案 3 :(得分:1)
我给你的过于简单的答案是,当你注意到你的程序往往有1)由相关数据组成的结构,以及2)很多在这些结构上运行的函数时,你就有了一个类。手。
例如,在实时操作系统中,任务通常具有任务控制块结构,其中包含有关任务的大量信息,例如其启动指针,优先级,堆栈位置及其状态。 (准备运行,阻塞某些东西,停止,尚未启动等),它的名称,以及任何特定于线程的全局变量的位置。还有许多操作该任务的函数将指向该任务控制块的指针作为参数。如果这个实时操作系统是用C ++编写的,那么你可以创建一个包含任务控制块数据的Task类,并且对该任务进行操作的函数将是类的方法。
答案 4 :(得分:0)
这是一个非常开放的问题,但在简短的课程中,可以更好地表达编程和需要考虑的现实世界的对象,概念和想法。类可用于表示物理对象或概念以及可对其执行的操作。通过链接对象和操作,您可以使用和关系更加明显,简而言之,使代码更容易掌握(尽管在大多数情况下仍然不是很简单)。