面向对象——意图与逻辑(四)
面向对象——意图与逻辑
面向对象——意图与逻辑 (二)
面向对象——意图与逻辑(三)
面向对象——意图与逻辑(四)
public
继承意味着is a
(狗是动物,苹果是水果,子类是父类)virtual
意味着接口必须被继承non-virtual
函数意味着接口和实现都必须被继承non-pure virtual
存在一个缺省算法(或者说父类要提供一个实现)pure virtual
则是完全客制化(customerization)override (重写),通俗地理解就是覆盖(新版本覆盖旧版本);
观察一个类,应首先观察其成员变量,因为大部分类最终表达的仍是一个具有很多成员方法的对象的抽象,也即它是对成员变量,以及围绕成员变量的成员方法的封装。
在多类的、类间关系较为复杂时,进行每个类单独的设计与实现时,脑海中应有一个 UML,它就是建筑实施中的图纸。
虚函数不能是静态函数
虚函数(vptr:virtual pointer、vtbl:virtual table)(也包括 this 指针)都是对象(class objects)的概念;
而 static 是全体对象,是类的概念范畴,静态函数没有 this 指针;
C++中的get、set方法
首先一点,是类的默认构造函数会分别调用类成员变量的默认构造函数。
class Test
{
private:std::vector<double> _weights;
public:// 有点set方法的感觉std::vector<double>& weights() { return _weights;}// 而这是get方法const std::vector<double>& weights() const { return _weights;}
}int main(int, char**)
{Test t; // 会调用std::vector<double> 的默认构造函数,创建_weights对象实例std::vector<double> dvec{0., 1., 2.};t.weights() = dvec; // 在客户端创建,然后setreturn 0;
}
如果这样理解还算正确的话,那么大量见诸于STL容器的两个版本的(mutable 和 non-mutable)的成员函数的作用便可显见。
Java/C++ 对多态的支持
Java 动态绑定,C++ 静态绑定(默认非多态),
这句话翻译过来即是:
父类引用指向子类对象,父类引用调用其子类中重写的方法时,Java默认多态,C++ 需显式的声明该方法为 virtual 虚函数。
面向对象——意图与逻辑(四)相关推荐
- 面向对象——意图与逻辑(五)
面向对象--意图与逻辑 面向对象--意图与逻辑 (二) 面向对象--意图与逻辑(三) 面向对象--意图与逻辑(四) (1)纯虚函数(virtual = 0)最多为 protected,不可能为 pri ...
- 面向对象——意图与逻辑(三)
面向对象--意图与逻辑 面向对象--意图与逻辑 (二) 面向对象--意图与逻辑(三) 面向对象--意图与逻辑(四) const 型函数 C++ 支持 const 型变量,也支持 const 型函数,但 ...
- 面向对象——意图与逻辑
编程语言中关键字的本质是什么?是向编译器传达一些信息. 何谓意图与逻辑这样古怪的词? 比如,对编译器而言,出现const修饰符,就是告诉(意图)编译器,"我不是左值,不可被修改,所有的修改动 ...
- 2017《面向对象程序设计》作业四
2017<面向对象程序设计>作业四 林燊 031602325 https://www.cnblogs.com/linshen/ github链接:https://github.com/Tr ...
- 分数计算器java报告_20182307 2019-2020-1 《数据结构与面向对象程序设计》实验四报告...
20182307 2019-2020-1 <数据结构与面向对象程序设计>实验四报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 陆彦杰 学号:20182307 实验 ...
- C#面向对象程序设计课程实验四:实验名称:C#面向对象程序设计基础
C#面向对象程序设计课程实验四:实验名称:C#面向对象程序设计基础 实验内容:C#面向对象程序设计基础 一.实验目的 二.实验环境 三.实验内容与步骤 3.1.1.实验内容 3.1.2.实验步骤 3. ...
- 2017711010137 赵栋 《面向对象程序设计》第四章学习总结
1.实验目的 (1)预定义类:(不是所有类都具有面向对象特征) 构造器的类名和方法名相同,是一种特殊的方法,用来构造并初始化对象. (2)用户自定义类:(各种主力类,没有main方法,却有实例域和实例 ...
- 西北工业大学#面向对象编程实验#实验四->第一题
题目一:文件读写 本次实验需要将Unit3-2中的复试系统改为从文件中读取试题信息并将部分学生试卷信息输出到文件中. 目的:增强使用文件读写的能力 背景:在此作业中,您将创建另一个版本的复试系统.在以 ...
- 2017福州大学面向对象程序设计寒假作业四
作业链接 第四次作业统计完成,本次作业满分100分,统计结果如下: 学号 姓名 作业地址 分数 031602431 王源 http://www.cnblogs.com/circlek/p/652872 ...
最新文章
- 四十二、文件的物理结构(下)
- win10搭建python环境_win10系统搭建python环境的还原方法
- 使用 uiautomator2
- VS2005 there is no source code available for the current location 解决方案
- 讲座记录——大数据共享和交易的挑战与初探
- 4)lsof linux命令,***Linux命令实时监测系统(top,htop,iotop,lsof,tcpdump,netstat,vmstat,iostat)...
- 项目是采用目前比较流行的 SpringBoot/SpringCloudAlibaba构建新零售微服务电商项目
- 木老师教笨笨课堂——系列讲座(从函数指针到委托) 四、C#的委托
- android开发-01-搭建环境
- docker运行jenkins挂掉_docker搭建jenkins
- python批量修改图片大小--pathlib库
- 芥川龙之介《烟草与魔鬼》
- Science子刊: 类配对分析法揭示孤独症患者肠道菌群解毒功能受损
- iOS毛玻璃磨砂特效
- yolo模型是什么神经网络,yolo是卷积神经网络吗
- 计算机怎么复制公式,excel怎么复制公式 -电脑资料
- 爬虫实战—拿下最全租房数据 | 附源码
- oracle bom递归查询,求多阶BOM查询代码
- 智能CDN(上):CDN的访问过程和加速原理
- 大写金额用计算机简单些,Excel如何将较小的金额转换为大写金额?
热门文章
- 【Linux复习——温故知新
- java语言中实现键盘输入_Java程序设计中的键盘输入数据的方法分析
- vue css隐藏_Vue+BootStrapV4,构建响应式、移动优先项目——BootstrapVue
- sparksql对hive操作
- linux暂时不能域名解析,Kali Linux中暂时不能解析域名
- ubuntu下的qt程序移植至ARM开发板
- R-CNN,Fast R-CNN,Faster R-CNN原理及执行与训练的实例+实现自己的目标检测(转)
- 免费2款标注工具实操(内含下载链接)
- vegan稀释曲线 基因丰度_R语言 vegan包计算物种累计曲线
- Gitlab+Git实现版本控制系统