C++面向对象程序设计学习笔记(1)
基本概念
对象:
面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体,每个对象都是由数据和操作代码两部分构成的。
类:
面向对象程序设计中,类是具有相同的数据和相同的操作的一组对象的集合,是对具有相同数据结构和相同操作的一类对象的描述。C++中类中数据称为数据成员,类中的操作是由函数实现的,这些函数被称为成员函数。
类与对象之间的关系是抽象与具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
消息与方法:
面向对象程序设计中,对象之间的联系被称为对象的交互,面向对象程序设计技术必须提供一种机制允许一个对象与另一个对象的交互,这种机制叫消息传递,一个对象向另一个对象发出的请求称为“消息”。在面向对象程序设计中的消息传递实际上是对现实世界中消息传递的直接模拟。调用对象中的函数就是对该对象传递一个消息,要求该对象实现某种行为。对象所能实现的行为,在程序设计方法中称为方法,它们是通过调用相应的函数实现的,在C++语言中方法是通过成员函数实现的。
基本特征
抽象:
抽象是通过特定实例抽取共同性质后形成概念的过程。面向对象程序设计中的抽象包括两个方面:数据抽象和代码抽象(或称行为抽象)。前者描述某种对象的属性或状态,也就是此类对象区别于彼类对象的特征物理量,后者描述了某类对象的共同行为特征或具有的共同功能。在面向对象程序设计方法中,对一个具体问题的抽象分析的结果,是通过类的描述和实现的。
封装:
在面向对象程序设计中,封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐蔽对象的内部细节。面向对象的程序在使用一个对象时,只能通过对象与外界的操作接口来操作它,对象中的函数名就是对象的对外接口,外界可以通过函数名来调用这些函数名来实现某种行为。
继承:
继承所表达的是对象类之间相关的关系,继承机制允许派生类继承基类的数据和操作。也就是说,允许派生类使用基类的操作和数据,同时,派生类还可以增加新的操作和数据。从继承源上,继承分为单继承和多继承,单继承是指每一个派生类只直接继承了一个基类的特征,多继承是指多个基类派生出一个派生类的继承关系。
多态:
面向对象系统的多态性是指不同对象收到相同消息时执行不同的操作。C++语言允许两种多态性,及编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载实现的,运行时的多态性是通过虚函数实现的。
C++面向对象程序设计学习笔记(1)的更多相关文章
- C++面向对象程序设计学习笔记(6)
多态性 编译时的多态性与运行时的多态性 在面向对象方法中,所谓多态性就是不同对象收到相同信息时,产生不同的行为.在c++程序设计中,即"一个接口,多种方法" 在C++中,多态性的实 ...
- C++面向对象程序设计学习笔记(7)
模板与异常处理 模板的概念 模板是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型作为参数. 模板分为函数模板和类模板,它们分别允许用户构造模板类和模板函数 函数模板与模板函数 函数模板实际 ...
- C++面向对象程序设计学习笔记(5)
派生类与继承 概念 继承允许编程者在已有类的基础上创建新的类,可以从一个或者多个已有类中继承函数和数据,并重新定义或者添加新的函数和数据,已有类称为基类或父类,新类称为派生类和子类. 声明 声明一个派 ...
- C++面向对象程序设计学习笔记(4)
类与对象(2) string类 C++不仅向下兼容C的字符表示方法,也声明了一种更方便的字符串类型,即string类. 想要使用string类,必须包括头文件string,即要声明 #include& ...
- C++面向对象程序设计学习笔记(3)
类与对象(1) 结构体与类 结构体的扩充 C++对结构体进行了扩充,它不仅可以含有不同类型的数据,还可以含有函数,结构体的函数可以像访问结构体中的数据一样进行访问. 类的声明 声明类的方法与声明结构体 ...
- C++面向对象程序设计学习笔记(2)
C++在非面向对象方面的扩充 C++向下兼容C语言,因此C语言中的语法在C++中依然成立 输入输出 C++添加了标准输入流对象cin和标准输出流对象cout来进行输入输出, 例: #include&l ...
- 20145213《Java程序设计学习笔记》第六周学习总结
20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...
- Java程序设计学习笔记(一)
时间:2015-6-2 23:04 程序员,程序猿,程序媛,码农 ------------------------------------------------------- --Java的应用 ...
- JavaScript高级程序设计---学习笔记(二)
面向对象程序设计1.属性类型.定义多属性.读取属性特性对象的属性在创建时都带有一些特征值,JavaScript通过这些特征值来定义它们的行为.这些特性是为了实现JavaScript引擎用的,因此不能直 ...
随机推荐
- 封装cookie的设置和获取
cookie的设置 function setCookie(key,value,options){ options=options||{}; var time=""; if(opti ...
- 随便读读skynet开源项目RILLSERVER
读RILL SERVER 因为源码是前段时间下载的,最近才拿出来分析,今天发现已经更新了,比如删除了module中订阅那些代码.但是并不影响总体的思路. 他加入了behavior3 . pl .FSM ...
- eclipse激活jrebel
1.原本jrebel已经激活了,某天突然失效了.报错如下: JRebel: ERROR Failed to obtain seat. Unable to connect to license serv ...
- MySQL使用crontab定时备份不执行问题
在使用crontab定时备份数据库时,发现并没有执行备份命令. 下面是定时备份的代码: 30 1 * * * /usr/local/mysql/bin/mysqldump --defaults-ext ...
- 云原生生态周报 Vol. 12 | K8s 1.16 API 重大变更
本文作者:源三.临石.张磊.莫源 业界要闻 1. K8s 1.16 将废弃一系列旧的 API 版本 影响面涉及 NetworkPolicy.PodSecurityPolicy.DaemonSet, D ...
- Python urlib 模块
Python urlib 模块 urlib 模块 当前再爬虫领域使用的比较少,不过它对图片爬取处理会比较方便.这里我们只使用它的图片爬取. 使用 urlib.request.urlretrieve(u ...
- Python sorted 函数
Python sorted 函数 sorted 可以对所有可迭代的对象进行排序操作,sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作.从新排序列表. sorted 语法: ...
- MySQL for OPS 01:简介 / 安装初始化 / 用户授权管理
写在前面的话 取这个标题的目的很简单,MySQL 在中小型企业中一般都是由运维来维护的,除非数据很重要的公司可能会聘请 DBA. 但是运维一般存在由于所需要了解的东西很多很杂,导致学习过程中很多东西只 ...
- mysql快速安装教程详解
Mysql 一.在https://www.cnblogs.com/zyx110/p/10799387.html中下载如下图中的压缩包 二.将mysql压缩包解压至c盘根目录下 三.把配置文件中的东西复 ...
- Python - 输入和输出 - 第十七天
Python 输入和输出 在前面几个章节中,我们其实已经接触了 Python 的输入输出的功能.本章节我们将具体介绍 Python 的输入输出. 输出格式美化 Python两种输出值的方式: 表达式语 ...