博览网C++学习第三周

本周学习真正的面向对象程序开发,

主要就是编写几个有关系(is-a)的类,然后编程的时候针对基类的指针和引用编程。

其实,C++在这里(指面向对象编程)有一些惯用法:

1. 基类析构函数必为虚函数

2. 基类应该要有虚函数(除了虚析函数外的虚函数),否则设计是有问题的。

3. C++中有一个派别认为虚函数(除了虚析函数外的虚函数 ) 都应该是private的,

这种思想本质上是将原本public的虚函数都“包裹”了一层非虚函数,非虚函数

调用私有虚函数也就是模板方法设计模式。我觉得明白原理即可,每个函数都

这样设计从开发效率上说太低了。

4. 其实C++搞面向对象的的最大短板就在于只能用指针(引用其实也一样)表示

一个对象族类。然而原生指针是不会自己做内存管理的,所以一堆的内存泄漏

问题随之而来。解决之道是std::shared_ptr<>,所以在这里智能指针的使用时相当

重要的,设计模式中C++也不应该直接用原生指针,也应该用std::shared_ptr<>。

5. 最后,我个人觉得如果用面向对象的设计,类族大部分应该是不可拷贝的,实在

要拷贝也应该搞个“虚拷贝函数” virtual Base* copy();

时间: 2024-10-10 04:18:44

博览网C++学习第三周的相关文章

201671010140. 2016-2017-2 《Java程序设计》java学习第三周

java学习第三周       不知不觉,学习java已经是第三周了,不同于初见时的无措,慌张,在接触一段时日后,渐渐熟悉了一些,了解到了它的便利之处,也体会到了它的一些难点,本周主攻第四章,<对象与类>,事实上,在第二周的实验中,我就已经接触过它了,当时我并不理解Scanner方法使用时,为什么要使用import语句,现在,通过学习第四章,我知道了,通过控制台进行输入时,需要构造一个Scanner对象,并与"标准输入流"System.in关联,使用import语句引入ja

linux学习第三周总结

linux学习第三周总结 学习linux的第三周,也是惊喜最多的一周,让我看到学linux并不是很枯燥,相反非常有趣,可玩性很多,但越深入越觉得可学习的地方有很多,也有非常多的不足,所以革命尚未成功,同志更需努力 同样来简单终结一下本周的重点,内容比较多,说要简单提一下,不做详解 一.shell脚本编程基础 内容:1. 编程基础 2. 脚本基本格式3. 变量4.运算5.条件测试6.条件判断if 7.条件判断case 8.配置用户环境 shell脚本:包含一些命令或声明,并符合一定格式的文本文件

学习H5三周感想

首先,我是一个不爱学习的孩子,不愿意动手,但是为了能够将来能够自食其力,我就选择了这个比较火的H5,希望自己将来有个能有个好的收入,可以娶她回家. 下面就说说我学习三周H5的感受吧.. 第一周:刚接触有新鲜感,感觉挺舒服的,但是越往后越让我感到害怕,看着那一行行的代码,我都在怀疑我是不是得了密集恐惧症.哈哈,可见我多想了,第一周学习简单的HTML语言,这个相对来说非常简单,就是所能做的图片不多,必须要和css以及js联合起来才能会出现各种各样缤纷色彩的网页.对第一个老师——许竞先的感受是:这个老

学习第三周

学生管理系统 ---------------------------------------------------------------------------------------------------------------------------- public class StudentManager { /**学生数组*/ public static Student[] stuArray = new Student[20]; /**学生人数*/ public static in

博览网C++学习第四周

本周貌似主题有点儿杂乱,我归纳了一下,主要有以下几个方面: 1. 运算符重载 主要包括了: 转换运算符(这个个人感觉很多坑,还不如直接搞个成员函数转换) 类似指针的类(其实就是重载了部分的指针运算符,如*,->,++,---等,其实就是智能指针呗) 函数对象(重载了operator()),主要好处是方便编写带有状态的"函数"(可以像函数一样用) 2. 模板(这里的介绍都是常识性的,不足以让我们自己用模板写代码,看看别人写的估计马马虎虎还可以) 主要包括了: 类模板 函数模板 成员

前端学习第三周BFC的学习

BFC之前学的时候没太懂,后来专门复习了下. BFC(Block formatting context):可以直接翻译为"块级格式化上下文",它是一个独立的渲染区域,只有Block-level box参与,它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干. BFC的布局规则:1.内部的Box会在垂直方向,一个一个的放置:2.Box垂直方向的距离由margin决定.且同一个BFC的两个相邻Box的margin会发生重叠:3.每个元素的margin box的

python学习第三周(下 函数)

本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值  嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测试, 交集\差集\并集\反向(对称)差集 2. 元组 只读列表,只有count, index 2 个方法 作用:如果一些数据不想被人修改, 可以存成元组,比如身份证列表 3. 字典 key-value对 特性: 无顺序 去重 查询速度快,比列表快多了 比list占用内存多 为什么会查询速度会快呢?

python3学习第三周

1.列表,元组操作 列表是通过下标(索引)对元素进行增删该查的. 列表中可以嵌套列表,元组. 列表是有序的. 元组是只读的,不能更改. 2.字符串操作 字符串是不能更改的 3.字典操作 字典是通过key对value进行增删改查的. 字典可以嵌套列表,字典. 字典是无序的. 4.集合操作 集合是一个无序的,不重复的数据组合,它的主要作用是 a.去重:把一个列表变成集合,就自动去重了. b.关系测试:测试两组数据之间的交集.差集.并集等关系. a=set([1,2,3,4,5,6])   #创建一个

机器人学-估计与学习-第三周

3.1 robotic mapping 3.1.1 Introduction 3.1.2 Introduction to mapping Map and Mapping (1) map is a spatial model of robot's environment (2) mapping is a process for building a map (3) consideration for mapping - map representation - avalable sensors -