【一天一个C++小知识】009.C++面向对象
1. 结构化 v.s. 面向对象
结构化程序设计方法是一种模块化程序设计方法,解决问题时以功能为中心,一定的功能模块虽然也作用于特定的数据,但它们没有被封装在一起。
面向对象程序设计方法则是以对象为中心来解决问题,属于同种对象的属性和服务被抽象出来封装到一起。
2. 面向对象方法的特定
2.1. 数据抽象
类是一组相似对象的抽象描述,抽取了这些对象的共性组成一个共同的概念,而ADT是一组相似类的抽象,一个类是ADT的具体实现。
2.2 封装
指软件的组成部分(模块、子程序、方法等)应互相独立或者隐藏设计的细节。传统的方法中,封装通常局限于将功能和数据分开封装;而面向对象方法中,封装是将功能和数据同时装入对象中。
2.3 继承
子类自动继承父类中的一些属性和行为,不必再进行定义,从而实现代码的复用。
2.4 多态
程序中同一符号或名字在不同情况下具有不同解释的现象称为多态性,由程序员设计的多态性有两种基本形式:编译时多态和运行时多态。后者是面向对象的一大特点。
编译时多态是指在程序编译阶段即可确定下来的多态性,主要通过使用重载机制获得,重载又包括函数重载和运算符重载。
运行时多态是指必须等到程序动态运行时才可确定的多态性,主要通过继承结合动态绑定获得。
2.5 动态绑定
1.https://blog.csdn.net/qq_37050329/article/details/82800422
2.https://blog.csdn.net/yutouqian/article/details/40783373
虚函数的限制:
- 仅适用于有继承关系的类对象,所以只有类的成员函数才能说明为虚函数
- 不能为静态成员函数
- 不能为内敛函数
- 构造函数不能是虚函数但是析构函数可以是
3. C和C++
C的优点:
- 硬件无关,可移植性强
- 简洁方便
- 运算符和数据类型丰富
- 可直接访问内存地址
- 位操作
- 运行效率高
C的缺点:
- 检查机制弱,编译时不能发现编程错误
- 不支持代码复用机制
- 难以控制大规模程序的复杂性
C++语言:
- C的超集,兼容C
- 继承了C的灵活性和高效性
- 扩充了对面向对象程序设计和高层次问题抽象方法的支持
- 完善了C的类型检查、代码复用、数据抽象机制,便于大规模程序开发
- 既反映了结构化程序设计方法,又反映了面向对象程序设计方法
C++程序结构:
为防止重复包含和嵌套包含,应在头文件加上如下的预编译命令:
#ifndef __INCLUDE_类名_H__
#define __INCLUDE_类名_H__
...
#endif
欢迎扫描二维码关注微信公众号 深度学习与数学[每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾])
【一天一个C++小知识】009.C++面向对象相关推荐
- 安卓期末作品小项目_每日一个财务小知识——洞悉洞晰财务报告第一季
财务报告 洞悉洞晰财务报告 目录 01/账务报告概述 02/资产负债表 03/利润表 04/现金流量表 05/所有者权益变动表 06/附注 一.财务报告概述 (一)财务报告及其目标 财务报告是指企业对 ...
- 【每天一个Python小知识】用yaml的yaml.safe_load()方法读取配置文件中的参数
文章目录 ymal安装 配置文件格式 配置文件读取 yaml是专门用来写配置文件的,因其简洁高效而被大众喜爱. ymal安装 python3安装: pip install pyyaml#python2 ...
- list赋值给另一个list_Python小知识: List的赋值方法,不能直接等于
Python中关于对象复制有三种类型的使用方式,赋值.浅拷贝与深拷贝.他们既有区别又有联系,刚好最近碰到这一类的问题,研究下. 一.赋值 在python中,对象的赋值就是简单的对象引用,这点和C++不 ...
- 每天一个shell小知识(shell变量)
目录 shell变量 自定义变量: 变量定义/查看 变量赋值的特殊操作: 双引号 单引号 反撇号 设置变量的作用范围: 特殊变量---环境变量: 位置变量: 预定义变量: shell变量 在各种she ...
- 每天一个shell小知识(for)
目录 For循环语句 For语句的结构 结构 执行流程 实例 For循环语句 在实际工作环境中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令完全相同.如:根据服务 ...
- 【每天一个Python小知识】NumPy中的np.where
函数形式:a = np.where(b) 功能:找到满足条件的b的索引a. 参数:b是某种条件,要求是np类型. 返回值:a是返回的索引,也是np类型. 举个套娃的例子来更好的了解这个函数: impo ...
- 【每天一个Python小知识】NumPy中的np.any
import numpy as np np.any(np.array) 对矩阵中所有元素做或运算,存在True则返回True 一般在条件判等时使用,如: import numpy as np a = ...
- 每天一个sql小知识(2)在oracle中实现MySQL的Limite功能
oracle无法使用MySQL的Limite操作,可以使用rownum代替 例:select* from stu where rownum<=10;
- 英文登录QQ账号 一个有趣的小知识
今天刷视频看到的一个小知识 用英文账号登录去登录QQ 首先需要把 你的QQ账号转换为16 进制的数,因为16进制的数里面是有英文字母的 abcde 进制转换可以用windows10自带的计算器去计算 ...
- 计算机卸载一个程序正确操作,小知识:为什么电脑卸载一个几G的软件要很久,手机却能瞬间完成...
日常使用手机或电脑,安装卸载软件已成为家常便饭.但是,有木有细心的小伙伴注意过,手机端卸载一个几G的软件通常都是瞬间完成的,而电脑端却要很久的时间,很多时候还不能及时的卸载干净呢?理论上来讲,电脑端的 ...
最新文章
- Unix的标准I/O与重定向的若干概念解析
- 10.python网络编程(解决粘包问题 part 2)
- phpcms 加载php文件,PHPCMS配置文件的读取
- Spring Boot - 修改Tomcat默认的8080端口
- 为什么NX10帮助功能无法找到HTML,NX10.0 新功能介绍视频教程专辑
- 自考那些事儿(八):计算机网络原理(原理篇)之网络各层
- java lock代码写法_[代码全屏查看]-java lock的使用
- Java编程:分治算法
- java sdk qq登录授权_社会化登录分享-QQ SDK接入
- 高大上的cmd命令行来袭!颜值与内涵兼备
- c语言编写dxf文件吗,判断dxf文件的版本
- 古诗词在线起名 - 一刀工具箱
- 跟青翼一起学Qt4编程大纲目录
- Cesium for UE4 与 3DTiles
- 石墨文档软件服务器,软件技巧 篇十三:工作学习好帮手,在线文档使用体验之石墨文档...
- 解决小程序插槽slot内容显示不对,无论是原生小程序还是uniapp开发的,解决办法如下
- 经典WinCC如何移植到TIA博途WinCC Professional?
- 教育机构课程顾问常见黑话大全
- Mac-OutLook农历日历的设置
- opensource项目_宣布2018年Opensource.com社区奖获奖者