什么是对象

把函数放进结构是C++中的根本改变,并且这引起我们将结构作为新概念去思考。在C中,结构是数据的凝聚,它将数据捆绑在一起,使得我们可以将它们看作一个包。但这除了能使程序设计方便之外,别无其他好处。这些结构上的运算可以用在别处。然而将函数也放在这个包内,结构就变成了新的创造物,它既能描述属性(就像C中的struct能做的一样),又能描述行为,这就形成了对象的概念。对象是一个独立的有约束的实体,有自己的记忆和活动。 ? ? ? ?“对象”和“面向对象的程序设计”(OOP)术语不是新的。第一个OOP语言是Simula-67,于1967年由Scandinavia发明,用于辅助解决建模问题。这些问题似乎总是包括一束相同的实体(诸如人、细菌、小汽车),它们为互相交互而忙碌。Simula允许对实体创建一般的描述,描写它的属性和行为,然后取总的一束。在Simula中,这种“一般的描述”称为class(类)由类产生的大量的项称为对象。在C++中,对象只是一个变量,最纯的定义是“存储的一个区域”。它是能存放数据的空间,并隐含着还有在这些数据上的运算。
不幸的是,对于各种语言,涉及这些术语时,并不完全一致,尽管它们是可以接受的。我们有时还会遇到面向对象语言是什么的争论,虽然到目前为止这已被认为是相当好的选择。还有一些语言是object-based(基于对象的),意味着它们有像C++的结构加函数这样的对象,正如我们已经看到的。然而,这只是到达面向对象语言历程中的一部分,停留在把函数捆绑在结构内部的语言是基于对象的,而不是面向对象的。