--- title: Object Oriented Programming using C++ localeTitle: 面向对象的C ++编程 --- ## 面向对象的C ++编程 面向对象编程,简称OOP,旨在实现编程中的继承,隐藏和多态等真实世界实体。 OOP的主要目的是将数据和对其进行操作的函数绑定在一起,这样除了该函数之外,其他任何代码都不能访问这些数据。 让我们了解面向对象编程语言的不同特征: ### 宾语: 对象是面向对象系统中的基本运行时实体,对象是类的实例,这些是定义的用户定义数据类型。 ```cpp class person { char name[20]; int id; public: void getdetails(){} }; int main() { person p1; //p1 is an object } ``` 对象占用内存中的空间,并具有相关的地址,如pascal或结构中的记录或C中的并集。 执行程序时,对象通过相互发送消息进行交互。 每个对象都包含操作数据的数据和代码。对象可以在不必了解彼此数据或代码的详细信息的情况下进行交互。知道接受的消息类型和对象返回的响应类型就足够了。 ### 类: 类是数据和函数或方法的蓝图。班级不占用任何空间。 ```cpp class class_name { private: //data members and member functions declarations public: //data members and member functions declarations protected: //data members and member functions declarations }; ``` 类是用户定义的数据类型,如C中的结构和联合。 默认情况下,类变量是私有的,但在结构的情况下它是公共的。在上面的例子中,人是一个类。 ### 封装和数据抽象: 将数据和函数包装(组合)到单个单元中称为封装。外部世界无法访问这些数据,只有那些包含在类中的函数才能访问它。这种数据与程序直接访问的隔离称为数据隐藏或信息隐藏。 数据抽象是指仅向外界提供所需信息并隐藏实现细节。例如,将具有公共函数的类Complex视为getReal()和getImag()。我们可以将类实现为大小为2的数组或两个变量。抽象的优点是,我们可以在任何时候改变实现,Complex类的用户不会受到影响,因为我们的方法接口保持不变。如果我们的实施是公开的,我们就无法改变它。 ### 遗产: 继承是一个类的对象获取另一个类的对象属性的过程。它支持层次分类的概念。继承提供可重用性。这意味着我们可以在不修改现有类的情况下向其添加其他功能。 ### 多态性: 多态性意味着能够采用多种形式。操作可能在不同情况下表现出不同的行为。行为取决于操作中使用的数据类型。 C ++支持运算符重载和函数重载。运算符重载是使运算符在不同实例中展示不同行为的过程。函数重载使用单个函数名来执行不同类型的任务。多态性广泛用于实现继承。 ### 动态绑定: 在动态绑定中,响应函数调用而执行的代码在运行时决定。 C ++具有支持此功能的虚拟功能。 ### 消息传递: 对象通过彼此发送和接收信息来彼此通信。对象的消息是执行过程的请求,因此将调用接收对象中生成所需结果的函数。消息传递涉及指定对象的名称,函数的名称和要发送的信息。