Skip to content

Latest commit

 

History

History
46 lines (24 loc) · 2.86 KB

什么是面向对象编程.md

File metadata and controls

46 lines (24 loc) · 2.86 KB

如何理解 C++ 是面向对象编程

面试高频指数:★★★☆☆

说明:该问题最好结合自己的项目经历进行展开解释,或举一些恰当的例子,同时对比下面向过程编程。

面向过程编程:

一种以执行程序操作的过程或函数为中心编写软件的方法。程序的数据通常存储在变量中,与这些过程是分开的。所以必须将变量传递给需要使用它们的函数。缺点:随着程序变得越来越复杂,程序数据与运行代码的分离可能会导致问题。例如,程序的规范经常会发生变化,从而需要更改数据的格式或数据结构的设计。当数据结构发生变化时,对数据进行操作的代码也必须更改为接受新的格式。查找需要更改的所有代码会为程序员带来额外的工作,并增加了使代码出现错误的机会。

面向对象编程(Object-Oriented Programming, OOP):

面向对象程序设计(Object-oriented programming,OOP)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。

面向对象特征

cpp面向对象的三个基本特征:

封装、继承、多态。

  • 封装可以隐藏实现细节,使得代码模块化;(使用函数指针把属性与方法封装到结构体中),将具体的实现过程和数据封装成一个函数,只能通过接口进行访问,降低耦合性。

  • 继承可以扩展已存在的代码模块(类);它们的目的都是为了代码重用。(结构体嵌套)子类继承父类的特征和行为,子类有父类的非 private 方法或成员变量,子类可以对父类的方法进行重写,增强了类之间的耦合性,但是当父类中的成员变量、成员函数或者类本身被 final 关键字修饰时,修饰的类不能继承,修饰的成员不能重写或修改。

  • 多态是为了实现的目的是为了接口重用(父类与子类方法的函数指针不同)。多态就是不同继承类的对象,对同一消息做出不同的响应,基类的指针指向或绑定到派生类的对象,使得基类指针呈现不同的表现方式。

类的封装:private,protected,public

把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。关键字:public, protected, private。不写默认为 private。

  • public成员,可以被任意实体访问
  • protected成员,只允许被本类和派生类的成员函数访问。
  • private成员,只允许本类的成员函数、友元类或友元函数访问

friend 友元类和友元函数

  • 能访问私有成员
  • 破坏封装性
  • 友元关系不可传递
  • 友元关系的单向性
  • 友元声明的形式及数量不受限制