首页 > 编程语言 >c++的面向过程与面向对象

c++的面向过程与面向对象

时间:2024-09-06 17:57:24浏览次数:12  
标签:语句 fp 功能 封装 多态 c++ 面向对象 面向 解决问题

面向过程与面向对象

面向过程:

在编程时重点考虑如何解决问题,以及解决问题的具体步骤。

面向对象:

在编程时重点考虑的是"谁"能解决问题(类、结构),以及"它"解决问题时所需要属性(成员变量)和功能(成员函数)。

抽象:

把“解决问题者”当作思考或观察对象,把解决问题所需的具备的属性和功能罗列出来,这个步骤叫作抽象。

封装:

把抽象的结果(问题所需的具体的属性和功能),设置相应访问权限(public/private/protected),按照C++的语法设计成类、结构,该过程叫作封装类,简称封装。

使用封装好的类、结构,实例化出对象(定义结构变量、类变量),通过对象调用相关功能(成员函数)配合相关属性(成员变量)达到解决问题的目的。

继承:

1、在解决一个问题之前,先考虑现有的类是否能解决部分问题,如果有则继承该类,在此基础上进行扩展,以缩短解决问题的时间(代码复用)。

2、在解决一个复杂庞大的问题时,把问题拆分成若干个小问题,每个小问题实现一个类去解决,最后把这若干个类通过继承进行汇总,达到解决问题的目的,这个方式可以降低问题的规模在难度,也方便团队分工、协作。

多态:

语句的多种形态,同样的语句根据环境或参数的不同,有不同的功能,这就叫多态。

多态可以分为:

编译时多态,编译器在编译代码时根据语句的参数、环境不同,能翻译出具有不同功能的二进制指令,例如:调用重载的函数,cin、cout的自动类型识别,模板技术(后续讲解)。

运行时多态,语句只在程序运行时,才能确定执行那种功能,一般指的是类多态,后续再详细讲解。

#include <iostream>
using namespace std;
​
void func1(void)
{
    cout << "我是func1函数" << endl;
}
​
void func2(void)
{
    cout << "我是func2函数" << endl;
}
​
int main()
{
    void (*fp)(void);
    
    int cmd;
    cin >> cmd;
    if(cmd % 2)
        fp = func1;
    else
        fp = func2;
    
    fp();
}

标签:语句,fp,功能,封装,多态,c++,面向对象,面向,解决问题
From: https://blog.csdn.net/zzt_is_me/article/details/141966105

相关文章

  • c++的类和对象
    类和对象什么是类把抽象结果(利用面向对象的思维模式,思考、观察出的结果),使用用C++的语法封装出一种类似结构的自定义数据类型(复合数据类型)。如何设计类struct结构名{  成员函数;//结构的成员默认访问权限是public  成员变量;};​class类名{  成员......
  • C语言面向对象
    我们在编写程序时,通常采用以下步骤:将问题的解法分解成若干步骤使用函数分别实现这些步骤依次调用这些函数这种编程风格的被称作面向过程。除了面向过程之外,还有一种被称作面向对象的编程风格被广泛使用。面向对象采用基于对象的概念建立模型,对现实世界进行模拟,从而完......
  • 修复Microsoft Visual C++ 2015中msvcp140_ATOMIC_WAIT.dll缺失的5大策略
    在电脑使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp140_ATOMIC_WAIT.dll丢失”。这个错误提示通常出现在运行某些程序或游戏时,给使用者带来了很大的困扰。那么,如何解决这个问题呢?一,原因分析msvcp140_ATOMIC_WAIT.dll是MicrosoftVisualC++2015运行时库的一部......
  • C++常见知识掌握
    1.Linux软件开发、调试与维护内核与系统结构Linux内核是操作系统的核心,负责管理硬件资源,提供系统服务,它是系统软件与硬件之间的桥梁。主要组成部分包括:进程管理:内核通过调度器分配CPU时间给各个进程,实现进程的创建、调度、终止等操作。使用进程描述符(task_struct)来存储进程......
  • 信奥赛C++老师解一本通题:1182:合影效果
    ​【题目描述】小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?【输入】第一行是人数nn(2≤n≤......
  • PHP8面向对象快速入门五 接口 抽象类
    在PHP中,接口是一种定义方法但不实现它们的方式。接口可以被类实现,使得这些类承诺实现接口中定义的所有方法。接口主要用于定义类的共同行为,而不涉及具体的实现细节。以下是PHP接口的基本用法:定义接口interfaceAnimal{publicfunctionmakeSound();publicfunct......
  • GESP C++三级真题 (2023年3月):春游,密码合规检测
    春游题目描述老师带领同学们春游。已知班上有N位同学,每位同学有从0到N-1的唯一编号。到了集合时间,老师确认是否所有同学都到达了集合地点,就让同学们报出自己的编号。到达的同学都会报出的编号,不会报出别人的编号,但有的同学很顽皮,会多次报出。你能帮老师找出有哪些同学没有到......
  • C++创建与调用dll动态链接库(MinGW64 Dev-C++)
    本文使用的是dev-c++,如果涉及到VC++中不一样的操作,也会适当进行区分。项目一:创建DLL1、创建一个DLL类型的项目,当前命名为dlltest,并选择合适的路径进行保存。 2、在生成的预设置代码中,加入如下代码//这是头文件dll.h#ifndef_DLL_H_#define_DLL_H_#ifBUILDING_DLL#de......
  • 【C++】简单易懂的vector迭代器
    一、迭代器的本质vector的迭代器本质上就是一个被封装的指针。迭代器的用法和指针的用法十分相似,就是一个像指针的假指针,我们不妨把迭代器看作一个伪指针。二、迭代器的使用句式(可以看到迭代器和指针很像):迭代器有四种:1、正向迭代器:容器名<类型>::iterator迭代器名2、常......
  • [C++ Daily] 虚继承与虚析构带来的变化
    虚继承在菱形继承中,若Student和Teacher继承于Person,TS继承于Student和Teacher,则构造TS时会调用两次Person的Construct和Destruct函数,若为虚继承,则不会出现上述问题(此类问题主要解决继承带来的多次非法delete)原继承:结果:虚继承:结果:虚析构父......