当前位置: 首页 > news >正文

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;elsefp = func2;fp();
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HNU-2023电路与电子学-实验1
  • ruoyi-vue-pro快速修改的包名和选配功能板块
  • Python操作数据库的ORM框架SQLAlchemy快速入门教程
  • 运维领域的先进思想和趋势
  • timm从本地加载预训练模型
  • Docker 容器编排之 Docker Compose
  • OpenHarmony鸿蒙开发( Beta5.0)智能手表应用开发实践
  • Unity【Colliders碰撞器】和【Rigibody刚体】的应用——小球反弹效果
  • C#读写锁与并发控制
  • 【第一章】-MATLAB Simulink概述
  • 展会回顾 | SunTorque智能扭矩系统亮相GAF2024展览会,收获满满
  • 【深度学习】卷积神经网络与 LeNet
  • WPF——自定义RadioButton
  • 使用pytorch深度学习框架搭建神经网络
  • 密码中的字符的判断,字母,数字,特殊字符等
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • CSS居中完全指南——构建CSS居中决策树
  • ECMAScript入门(七)--Module语法
  • Facebook AccountKit 接入的坑点
  • HashMap剖析之内部结构
  • HTTP中的ETag在移动客户端的应用
  • Linux快速复制或删除大量小文件
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • 那些被忽略的 JavaScript 数组方法细节
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • ionic入门之数据绑定显示-1
  • k8s使用glusterfs实现动态持久化存储
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​​​【收录 Hello 算法】9.4 小结
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • # C++之functional库用法整理
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (1)(1.9) MSP (version 4.2)
  • (7)摄像机和云台
  • (poj1.2.1)1970(筛选法模拟)
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (附源码)php新闻发布平台 毕业设计 141646
  • (一)插入排序
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)编辑寄语:因为爱心,所以美丽
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .“空心村”成因分析及解决对策122344
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET 发展历程