【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)

🔥个人主页Forcible Bug Maker

🔥专栏C++

目录

前言

什么是面向对象?

类的定义

类的访问限定符及封装

访问限定符

封装

类的作用域

类的实例化

类对象的存储方式

this指针

结语


前言

最早的C++版本(C with classes)中,最先加上的就是类的机制,它构成了面向对象编程(OOP)的基础。封装,继承,多态作为面向对象编程(OOP)的三大特性,极大的降低了我们项目过程中的代码编写和维护难度。类使C++有了与C语言不同的编程模式(OOP),这也是让其区别于C语言成为一名独立编程语言的诸多原因之一。本篇博客是C++类和对象内容的第一篇,将会介绍什么是面向对象,关于最基础类的定义,类的访问限定符以及封装等内容。

什么是面向对象?

在来到C++之前,想必大家已经接触过C语言,C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。拿洗衣服来举例,如果采用面向过程的逻辑,那么洗衣服这个过程是这样的:

C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完
成。这次同样拿洗衣服来举例,如果采用面向对象的逻辑,洗衣服这个过程就是这样的:

面向对象(Object-Oriented,简称OO,OOP就是Object Oriented Programming)是一种程序设计模型,它将数据和操作数据的方法绑定在一起,作为一个单独的对象。在面向对象编程中,程序员定义的是对象,这些对象包含数据(属性)以及操作这些数据的方法(函数)。

面向对象和面向过程的主要区别体现在以下几个方面:

  1. 关注点
    • 面向过程(Procedure-Oriented):关注于步骤与流程,即先做什么,后做什么。它按照步骤一步一步解决问题,是一种线性化的思考方式。
    • 面向对象(Object-Oriented):关注于对象,对象由数据和操作数据的方法组成,它将现实世界中的事物抽象为对象,并通过对象之间的交互来解决问题。
  2. 复用性
    • 面向过程:代码复用性差,因为函数是独立的,需要重复编写相似的逻辑。
    • 面向对象:代码复用性好,因为可以通过继承和多态等机制,让子类复用父类的属性和方法。
  3. 扩展性
    • 面向过程:随着程序规模的增大,维护和扩展变得困难。
    • 面向对象:由于数据和方法的封装,使得程序的维护和扩展变得相对容易。
  4. 设计思路
    • 面向过程:是自顶向下的设计,即先考虑整体架构,再逐步细化。
    • 面向对象:是自底向上的设计,即先定义对象,然后让对象之间通过消息传递来交互,形成整个系统。

到这里,大家应该能稍微体会到面向对象逻辑了。

类的定义

上面刚刚提到,面向对象的设计模式能将数据(成员变量)操作数据的方法(函数)绑定在一起,具体是怎么绑定的,这就是我们要引入的内容——

C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量也可以定义函数。比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量现在以C++方式实现,会发现struct中也可以定义函数

上面结构体的定义,在C++中更喜欢用class来代替。没错,当你使用class来定义成员变量和函数时,你就已经触及到类最基本的用法了。

class className
{
        // 类体:由成员函数和成员变量组成
}; // 注意后面的分号

class为定义类的关键字ClassName为类的名字{ }中为类的主体,注意类定义结束时后面
号不能省略

评论 119
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Forcible Bug Maker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值