🔥个人主页:Forcible Bug Maker
🔥专栏:C++
目录
前言
最早的C++版本(C with classes)中,最先加上的就是类的机制,它构成了面向对象编程(OOP)的基础。封装,继承,多态作为面向对象编程(OOP)的三大特性,极大的降低了我们项目过程中的代码编写和维护难度。类使C++有了与C语言不同的编程模式(OOP),这也是让其区别于C语言成为一名独立编程语言的诸多原因之一。本篇博客是C++类和对象内容的第一篇,将会介绍什么是面向对象,关于最基础类的定义,类的访问限定符以及封装等内容。
什么是面向对象?
在来到C++之前,想必大家已经接触过C语言,C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。拿洗衣服来举例,如果采用面向过程的逻辑,那么洗衣服这个过程是这样的:
C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完
成。这次同样拿洗衣服来举例,如果采用面向对象的逻辑,洗衣服这个过程就是这样的:
面向对象(Object-Oriented,简称OO,OOP就是Object Oriented Programming)是一种程序设计模型,它将数据和操作数据的方法绑定在一起,作为一个单独的对象。在面向对象编程中,程序员定义的是对象,这些对象包含数据(属性)以及操作这些数据的方法(函数)。
面向对象和面向过程的主要区别体现在以下几个方面:
- 关注点:
- 面向过程(Procedure-Oriented):关注于步骤与流程,即先做什么,后做什么。它按照步骤一步一步解决问题,是一种线性化的思考方式。
- 面向对象(Object-Oriented):关注于对象,对象由数据和操作数据的方法组成,它将现实世界中的事物抽象为对象,并通过对象之间的交互来解决问题。
- 复用性:
- 面向过程:代码复用性差,因为函数是独立的,需要重复编写相似的逻辑。
- 面向对象:代码复用性好,因为可以通过继承和多态等机制,让子类复用父类的属性和方法。
- 扩展性:
- 面向过程:随着程序规模的增大,维护和扩展变得困难。
- 面向对象:由于数据和方法的封装,使得程序的维护和扩展变得相对容易。
- 设计思路:
- 面向过程:是自顶向下的设计,即先考虑整体架构,再逐步细化。
- 面向对象:是自底向上的设计,即先定义对象,然后让对象之间通过消息传递来交互,形成整个系统。
到这里,大家应该能稍微体会到面向对象逻辑了。
类的定义
上面刚刚提到,面向对象的设计模式能将数据(成员变量)和操作数据的方法(函数)绑定在一起,具体是怎么绑定的,这就是我们要引入的内容——类。
C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现,会发现struct中也可以定义函数。
上面结构体的定义,在C++中更喜欢用class来代替。没错,当你使用class来定义成员变量和函数时,你就已经触及到类最基本的用法了。
class className
{
// 类体:由成员函数和成员变量组成
}; // 注意后面的分号
class为定义类的关键字,ClassName为类的名字,{ }中为类的主体,注意类定义结束时后面分
号不能省略。