OOP(面向对象编程系统)
面向对象编程是一种使用类和对象来设计程序的方法或范例。 它通过提供一些简化了软件开发和维护的概念:
- 对象(任何具有状态和行为的实体都称为对象)
- 类(对象的集合称为类。 它是一个逻辑实体)
- 继承(当一个对象获取父对象的所有属性和行为,称为继承。 它提供代码可重用性。 它用于实现运行时多态性。)
- 多态(当一个任务通过不同的方式执行时,即被称为多态性。在C++中,我们使用函数重载和函数重写来实现多态。)
- 抽象(隐藏内部细节和显示功能被称为抽象。在C++中,使用抽象类和接口来实现抽象。)
- 封装(将代码和数据绑定(或包装)在一起成为单个单元称为封装。)
OOP相对于面向过程的编程语言的优点
-
OOP(面向对象)使开发和维护变得更容易,因为在面向过程的编程语言中,如果代码随着项目规模的增长而增长,就不容易管理。
-
OOP(面向对象)提供数据隐藏,而在面向过程的编程语言中,可以从任何地方访问全局数据。
-
OOP(面向对象)提供更有效地模拟真实世界事件的能力。 如果我们使用面向对象的编程语言,就可以提供真实世界里的问题的解决方案
C++对象和类
(注意:在C++中,对象是一组相似的类。 它是一个模板,用于从中创建对象。 它可以有字段,方法,构造函数等。)
C++ this指针
在C++编程中,this
是一个引用类的当前实例的关键字。 this
关键字在C++中可以有3
个主要用途。
- 用于将当前对象作为参数传递给另一个方法。
- 用来引用当前类的实例变量。
- 用来声明索引器。
C++ static关键字
在C++中,static
是属于类而不是实例的关键字或修饰符。 因此,不需要实例来访问静态成员。 在C++中,static
可以是字段,方法,构造函数,类,属性,操作符和事件。
C++ static关键字的优点
内存效率: 现在我们不需要创建实例来访问静态成员,因此它节省了内存。 此外,它属于一种类型,所以每次创建实例时不会再去获取内存。
C++静态字段
使用static
关键字声明字段称为静态字段。它不像每次创建对象时都要获取内存的实例字段,在内存中只创建一个静态字段的副本。它被共享给所有的对象。
C++结构体
在C++中,类和结构体(struct
)是用于创建类的实例的蓝图(或叫模板)。结构体可用于轻量级对象,如矩形,颜色,点等。
与类不同,C++中的结构体(struct
)是值类型而不是引用类型。 如果想在创建结构体之后不想修改的数据,结构体(struct
)是很有用的。
C++枚举
C++中的枚举是一种包含固定常量的数据类型。
枚举可以用于星期几(SUNDAY
,MONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
和SATURDAY
),方向(NORTH
,SOUTH
,EAST
和WEST
等)。C++枚举常量是静态和最终隐式。
C++枚举可以认为是具有固定的常量集合的类。
C++中枚举注意事项
- 枚举提高了类型安全性
- 枚举可以很容易地在
switch
语句块中使用 - 枚举可以遍历
- 枚举可以有字段,构造函数和方法
- 枚举可以实现许多接口,但不能扩展任何类,因为它在内部扩展
Enum
类
C++友元函数
如果一个函数在C++中定义为一个友元(使用friend
作为修辞符)函数,那么可以使用该函数访问类的protected
和private
数据。
通过使用friend
关键字,编译器知道给定的函数是一个友元函数。为了访问数据,友元函数的声明应该在以关键字friend
开头的类的主体内部进行。
C++继承
在C++中,继承是一个对象自动获取其父对象的所有属性和行为的过程。 在示例方式中,您可以重用,扩展或修改在其他类中定义的属性和行为。
在C++中,继承另一个类的成员的类称为派生类,其成员被继承的类称为基类。 派生类是基类的子类。
C++继承的优点
代码可重用性:现在可以重用父类的成员。 因此,不需要再次定义那些跟父类成员。 因此在类中需要较少的代码,提高了代码的重用。
例:
C++多级继承示例
当一个类继承一个被另一个类继承的类时,它被称为C++中的多级继承。 继承是传递的,所以最后的派生类获取所有其基类的所有成员。
C++聚合
在C++中,聚合是一个进程,一个类将另一个类定义为实体引用(一个类作为另一个类的成员)。 这是另一种重用类的方法。 它是一种表示HAS-A关系的关联形式。
C++聚合示例
下面来看看一个聚合的例子,其中Employee
类有Address
类的引用作为数据成员。 这样,它可以重用Address
类的成员。