【C++专栏】C++入门 | 类和对象 | 面向过程与面向对象的初步认识

简介: 【C++专栏】C++入门 | 类和对象 | 面向过程与面向对象的初步认识


  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

C++入门 | 类和对象 | 面向过程与面向对象的初步认识

文章编号:C++入门 / 04



一、面向过程

1. 什么是面向过程?

面向过程是一种编程范式,它将程序按照步骤或者流程进行组织,重点关注解决问题所需的具体步骤和操作。面向过程编程将程序设计为一系列的函数或子程序,每个函数都是对一系列操作的封装。

面向过程编程的主要特点包括:

  1. 顺序执行:程序按照自上而下的顺序逐步执行,每个步骤都依赖于前面的结果。
  2. 函数和子程序:将程序划分为多个函数或子程序,每个函数或子程序都负责完成一个具体的任务。
  3. 数据和函数的分离:面向过程编程将数据和操作分离,数据在程序中作为全局变量或者传递给函数进行处理。

面向过程编程适合简单和小型的程序,它通常关注问题的解决方法和具体步骤,对于问题的抽象和复用性相对较弱。在一些早期的编程语言如C中,面向过程编程是主要的编程范式。然而,现代的编程语言通常都支持面向对象编程,因为它更加灵活和面向抽象,适用于开发大型复杂的软件系统。

2. C语言 面向过程

C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。


二、面向对象

1. 什么是面向对象?

面向对象是一种编程范式,它将程序中的数据和操作封装在一起,形成对象。对象是程序的基本单位,具有属性和方法。面向对象编程的核心思想是将现实世界中的事物抽象成对象,在程序中通过创建对象来模拟现实世界的交互和行为。

面向对象编程的主要特点包括:

  1. 封装:将数据和操作封装在对象中,对象对外提供接口,隐藏内部实现细节,提高程序的可维护性和可靠性。
  2. 继承:通过继承机制,一个对象可以从另一个对象继承属性和方法,减少代码的重复性,提高代码的复用性。
  3. 多态:同一种操作可以在不同的对象上执行,实现代码的灵活性和扩展性。

面向对象编程可以使得程序结构清晰,提高代码的可读性和可维护性,适用于开发大型复杂的软件系统。在许多编程语言中,如Java、C++、Python等,都支持面向对象编程。

2. C++ 面向对象

C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完

成。

上图中四个对象:人、衣服、洗衣机、洗衣液

整个洗衣服的过程: 人将衣服放进洗衣机、倒入洗衣粉,启动洗衣机,洗衣机就会完成洗衣过程并且甩干

整个过程主要是:人、衣服、洗衣粉、洗衣机四个对象之间交互完成的,人不需要关新洗衣机具体是如何洗衣服的,是如何甩干的


三、C语言与C++的区别

C语言和C++是两种不同的编程语言,它们有以下区别:

  1. 语法差异:C语言是一种过程式编程语言,而C++语言是一种面向对象编程语言。C语言的语法相对简单,只有基本的语句和控制结构,而C++语言除了继承了C语言的语法外,还引入了类、对象、函数重载、运算符重载等面向对象的语法。
  2. 特性差异:C语言主要用于开发系统级程序和低级应用,比如操作系统、嵌入式系统等。而C++语言不仅可以用于系统级开发,还可以用于开发大型应用程序、图形用户界面(GUI)、数据库等高级应用。
  3. 内存管理:C语言中的内存管理是手动的,程序员需要显式地调用malloc和free函数来分配和释放内存。而C++语言中引入了自动内存管理机制,使用关键字new和delete来动态分配和释放内存,同时也提供了对象的构造函数和析构函数来自动管理资源。
  4. 扩展性:C++语言对C语言进行了扩展,新增了许多特性,如类、模板、异常处理、命名空间等。这些特性提高了代码的复用性和可维护性,使得C++语言更加灵活和强大。

总的来说,C语言适合编写底层和性能要求较高的程序,而C++语言适合开发大型、复杂的应用程序,并提供了更多的语法特性和方便的编程方式。


四、面向对象与面向过程的区别

面向对象和面向过程是两种不同的编程思想和方法。

面向过程编程:

  • 面向过程编程将程序看作一系列的步骤或函数的集合,侧重于解决问题的步骤和流程。
  • 程序中的数据是与函数分离的,函数接收输入数据,经过一系列操作后返回输出结果,强调算法和函数的重用。
  • 程序的执行顺序是线性的,按照顺序依次执行各个步骤或函数。
  • 程序的设计和实现过程主要关注具体的实现细节和算法逻辑。
  • 面向过程编程适用于简单的、功能相对独立的问题,比如一些脚本程序和小型工具等。

面向对象编程:

  • 面向对象编程将程序看作一系列对象的集合,强调对象之间的相互作用和关系。
  • 程序中的数据和函数被封装在对象中,对象拥有自己的属性和方法,可以进行封装、继承和多态等特性的使用。
  • 程序的执行顺序是通过对象之间的相互调用和消息传递来实现的,强调对象之间的协作和交互。
  • 程序的设计和实现过程主要关注对象的抽象和封装,关注系统的整体结构和模块化的设计。
  • 面向对象编程适用于复杂的、包含多个对象和关系的问题,比如大型软件系统和应用程序等。

总结:

  • 面向过程和面向对象是两种不同的编程思想和方法,面向过程侧重于解决问题的步骤和流程,面向对象侧重于对象之间的相互作用和关系。
  • 面向过程适用于简单、功能相对独立的问题,面向对象适用于复杂、包含多个对象和关系的问题。
  • 面向对象具有封装、继承和多态等特性,可以更好地实现代码的重用和模块化的设计。

目录
相关文章
|
9月前
|
编译器 C++ 容器
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
391 12
|
7月前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
210 0
|
7月前
|
存储 编译器 程序员
c++的类(附含explicit关键字,友元,内部类)
本文介绍了C++中类的核心概念与用法,涵盖封装、继承、多态三大特性。重点讲解了类的定义(`class`与`struct`)、访问限定符(`private`、`public`、`protected`)、类的作用域及成员函数的声明与定义分离。同时深入探讨了类的大小计算、`this`指针、默认成员函数(构造函数、析构函数、拷贝构造、赋值重载)以及运算符重载等内容。 文章还详细分析了`explicit`关键字的作用、静态成员(变量与函数)、友元(友元函数与友元类)的概念及其使用场景,并简要介绍了内部类的特性。
333 0
|
7月前
|
存储 安全 编译器
c++入门
c++作为面向对象的语言与c的简单区别:c语言作为面向过程的语言还是跟c++有很大的区别的,比如说一个简单的五子棋的实现对于c语言面向过程的设计思路是首先分析解决这个问题的步骤:(1)开始游戏(2)黑子先走(3)绘制画面(4)判断输赢(5)轮到白子(6)绘制画面(7)判断输赢(8)返回步骤(2) (9)输出最后结果。但对于c++就不一样了,在下五子棋的例子中,用面向对象的方法来解决的话,首先将整个五子棋游戏分为三个对象:(1)黑白双方,这两方的行为是一样的。(2)棋盘系统,负责绘制画面。
113 0
|
10月前
|
编译器 C++
类和对象(下)C++
本内容主要讲解C++中的初始化列表、类型转换、静态成员、友元、内部类、匿名对象及对象拷贝时的编译器优化。初始化列表用于成员变量定义初始化,尤其对引用、const及无默认构造函数的类类型变量至关重要。类型转换中,`explicit`可禁用隐式转换。静态成员属类而非对象,受访问限定符约束。内部类是独立类,可增强封装性。匿名对象生命周期短,常用于临时场景。编译器会优化对象拷贝以提高效率。最后,鼓励大家通过重复练习提升技能!
|
11月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
10月前
|
设计模式 安全 C++
【C++进阶】特殊类设计 && 单例模式
通过对特殊类设计和单例模式的深入探讨,我们可以更好地设计和实现复杂的C++程序。特殊类设计提高了代码的安全性和可维护性,而单例模式则确保类的唯一实例性和全局访问性。理解并掌握这些高级设计技巧,对于提升C++编程水平至关重要。
201 16
|
11月前
|
编译器 C语言 C++
类和对象的简述(c++篇)
类和对象的简述(c++篇)
|
10月前
|
编译器 C++
类和对象(中 )C++
本文详细讲解了C++中的默认成员函数,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载和取地址运算符重载等内容。重点分析了各函数的特点、使用场景及相互关系,如构造函数的主要任务是初始化对象,而非创建空间;析构函数用于清理资源;拷贝构造与赋值运算符的区别在于前者用于创建新对象,后者用于已存在的对象赋值。同时,文章还探讨了运算符重载的规则及其应用场景,并通过实例加深理解。最后强调,若类中存在资源管理,需显式定义拷贝构造和赋值运算符以避免浅拷贝问题。
|
10月前
|
存储 编译器 C++
类和对象(上)(C++)
本篇内容主要讲解了C++中类的相关知识,包括类的定义、实例化及this指针的作用。详细说明了类的定义格式、成员函数默认为inline、访问限定符(public、protected、private)的使用规则,以及class与struct的区别。同时分析了类实例化的概念,对象大小的计算规则和内存对齐原则。最后介绍了this指针的工作机制,解释了成员函数如何通过隐含的this指针区分不同对象的数据。这些知识点帮助我们更好地理解C++中类的封装性和对象的实现原理。